WPF Prism如何从DataTemplate访问父模型

a14dhokn  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(208)

对于视图中的某些DataTemplates,我尝试创建一些DataTriggers,用于更改DataTemplate控件上的属性。基于父类中的属性
下面的伪代码不是真实的的案例,也不是代码。。需要很长时间来解释真实的案例。DataTrigger所做的比这里显示的要多
因此,在DataTemplate“OderValueDT”中,“PreviousOrder”只需要从OderValueDT中绑定\访问父属性“OrderViewModel.AlertUser”。DataTrigger

OrderViewModel{
   Property bool AlertUser {get;}
   Property PreviousOrder OrderValue {get;}  
   .. 
}
PreviousOrder {
  Property string OrderComment {get;}
  .. 
}

<OrderView  ..> 
        <DataTemplate x:Key="OderValueDT">
            <Border
                <TextBlock
                    Name="PART_Comment"
                    Text="{Binding OrderComment, Mode=OneWay}"

                </TextBlock>
            </Border>
        </DataTemplate>
      <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=AlertUser, RelativeSource={RelativeSource TemplatedParent}}"  Value="True">
                    <Setter TargetName="PART_Comment" Property="Foreground" Value= "Red"/>
                </DataTrigger>
                </DataTrigger>
      </DataTemplate.Triggers>
    </DataTemplate>

搜索解决方案已经画了一个空白,我看到的大多数例子是访问父控件,例如。
{Binding Path=DataContext.Index,RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}
但“AlertUser”不是控件

dxxyhpgq

dxxyhpgq1#

你指定父模型为DataContext的元素的类型为AncestorType,并绑定到它的DataContext属性,例如:

<DataTrigger Binding="{Binding DataContext.AlertUser,
     RelativeSource={RelativeSource AncestorType={x:Type local:OrderView}}" ... />

相关问题