gpt4 book ai didi

wpf - 用户控件的 DataContext 上的 DataBind,而不是 WPF/MVVM 中的 ListBox

转载 作者:行者123 更新时间:2023-12-03 10:15:09 26 4
gpt4 key购买 nike

我需要将我的 ComboBox 绑定(bind)到来自 UserControl 的 DataContext 的“Rayons”属性(而不是包含我的 ComboBox 的 ListView 的 ItemSources)。

我尝试使用 RelativeSource 但它不起作用,并且调试窗口中没有错误消息。

简化代码:

<UserControl xmlns:my="clr-UI.View"
x:Class="UI.View.MontureView"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="673" d:DesignWidth="980">
<ListView ItemsSource="{Binding Path=Monture, Mode=TwoWay}" Margin="0,39,0,95" Height="600" HorizontalAlignment="Center">
<ListView.View>
<GridView>
<GridViewColumn >
<GridViewColumn.CellTemplate >
<DataTemplate>
<ComboBox Height="25" HorizontalAlignment="Center" Width="125"
Name="comboBoxRay" Margin="0,2,0,3"
ItemsSource="{Binding Path=Rayons, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
SelectedValue="{Binding Path=IDRayon, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="SRAY_LIBELLE"
SelectedValuePath="SRAY_ID" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</UserControl>

我该如何处理这种情况?

我发现 documentation但这没有帮助

最佳答案

有几种方法可以处理这个问题。但首先,如果您没有看到绑定(bind)错误,请尝试使用 Snoop 查看是否存在绑定(bind)错误。

但是,如果您使用 RelativeSource 绑定(bind),您的 Path 应该差不多是这样的: Path= 数据上下文 .人造丝。在您的情况下,绑定(bind)需要您的用户控件上的 Rayons 属性,但当然没有 Rayons 属性。

像您所做的相对源绑定(bind)大部分时间都有效,但是当您在用户控件中的用户控件中有用户控件时,它变得很困难;)在这种情况下我使用 数据上下文标记接口(interface) (空接口(interface))。

public interface IDataContextMarkerRayonsSource {}

然后将此接口(interface)添加到您的特定用户控件并将 relativesource 绑定(bind)更改为 AncestorType
ItemsSource="{Binding Path=DataContext.Rayons, RelativeSource={RelativeSource AncestorType={x:Type local:IDataContextMarkerRayonsSource }}}"

关于wpf - 用户控件的 DataContext 上的 DataBind,而不是 WPF/MVVM 中的 ListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com