我正在尝试使用负责控制数据的ViewModel来更新我的控件。但是,我不知道如何通过我使用ListBox设置的图层来访问控件 - > ListBoxItem.ItemTemplate-> DataTemplate-> Control:
<ListBox x:Name="OrdersList" ItemsSource="{Binding Orders, Mode=TwoWay }" >
<ListBox.ItemTemplate x:Uid="orderListBoxItemTemplate">
<DataTemplate x:Name="orderListBoxDataTemplate">
<materialDesign:Card Padding="20" Margin="5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0 0 50 0">
<TextBlock Text="{ Binding OrderNumber, Mode=OneWay }" FontSize="18" Style="{DynamicResource MaterialDesignTitleTextBlock}" />
<TextBlock Text="{ Binding Supplier, Mode=TwoWay }" FontSize="18" Style="{DynamicResource MaterialDesignTitleTextBlock}" />
<TextBlock Text="{ Binding DeliveryDate, Mode=TwoWay }" FontSize="18" Style="{DynamicResource MaterialDesignTitleTextBlock}" />
<TextBlock Text="{ Binding Note, Mode=TwoWay }" FontSize="18" Style="{DynamicResource MaterialDesignTitleTextBlock}" />
</StackPanel>
<local:ContactView x:Name="ContactViewItem" Grid.Column="1"/>
</Grid>
</materialDesign:Card>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如何访问控件&#34; ContactViewItem&#34;无需重构我的XAML?
答案 0 :(得分:0)
视图模型不应访问或甚至不了解视图中的某些控件。这打破了MVVM模式以及它的全部内容。
相反,您应该将ContactView
控件的属性绑定到视图模型的属性。
如果ContactView
是您的自定义控件或UserControl
,您可以在其后面的代码隐藏中定义依赖项属性,并将这些属性绑定到视图模型的属性或Order
类。然后你应该处理后者的任何逻辑。