2017-08-14 72 views
-3

我正在尝试使用负责控制数据的ViewModel来更新我的控件。不过,我不知道如何通过我与ListBox-> ListBoxItem.ItemTemplate-> DataTemplate->控制设置层访问控制:DataTemplate中的XAML访问控制

<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> 

如何访问控制“ContactViewItem”而不必重新构建我的XAML?

+0

从哪里更新控件? – mm8

+0

从链接到xaml的.cs代码 – Felix

+0

为什么你想这么做?你想要用ContactView控件做什么? – mm8

回答

0

视图模型不应该访问视图中的某个控件,甚至不应该知道某个控件。这打破了MVVM模式以及它的全部内容。

相反,您应该将ContactView控件的属性绑定到视图模型的属性。

如果ContactView是您的自定义控件或UserControl,您可以在其代码隐藏中定义依赖项属性,并将它们绑定到您的视图模型或类视图的属性。然后你应该处理后者的任何逻辑。