2017-08-14 51 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,您可以在其代碼隱藏中定義依賴項屬性,並將它們綁定到您的視圖模型或類視圖的屬性。然後你應該處理後者的任何邏輯。