【问题标题】:XAML Access Control Within DataTemplate [duplicate]DataTemplate 中的 XAML 访问控制 [重复]
【发布时间】:2017-08-14 14:00:17
【问题描述】:

我正在尝试使用负责控制数据的 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>

如何在不重构 XAML 的情况下访问控件“ContactViewItem”?

【问题讨论】:

  • 从哪里更新控件?
  • 来自链接到 xaml 的 .cs 代码
  • 你为什么要这样做?你到底想用 ContactView 控件做什么?
  • 当用户向列表中添加新项目时,我正在尝试更新链接到 ContactView 控件的视图模型中的对象

标签: c# wpf xaml data-binding


【解决方案1】:

视图模型不应该访问,甚至不应该了解视图中的某些控件。这打破了 MVVM 模式以及它的全部意义。

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

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

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2015-07-01
    相关资源
    最近更新 更多