Wpf 我能';无法在多值转换器中获取视图模型的属性
我有一个Wpf 我能';无法在多值转换器中获取视图模型的属性,wpf,datagrid,imultivalueconverter,Wpf,Datagrid,Imultivalueconverter,我有一个DataGrid。我想决定何时折叠一个列以及何时显示它 这是我的代码: <UserControl.Resources> <ResourceDictionary> <FrameworkElement x:Key="ProxyElement" DataContext="{Binding}" /> </ResourceDictionary> <UserControl.Resou
DataGrid
。我想决定何时折叠一个列以及何时显示它
这是我的代码:
<UserControl.Resources>
<ResourceDictionary>
<FrameworkElement x:Key="ProxyElement" DataContext="{Binding}" />
</ResourceDictionary>
<UserControl.Resources>
我需要代理元素从不属于可视树的元素访问视图模型
在多绑定中,第二个绑定工作。在转换器中,我接收到值1
,但问题在于第一个元素。我没有得到视图模型的属性,即它是一个字符串
。我得到一个dependencProperty.unset值
如何将视图模型的属性传递给多值转换器?ProxyElement不会绑定
资源中的数据上下文,因为它不是可视化树的一部分。要实现这一点,请在可视化树中的任意位置定义框架元素
,例如,如下所示的网格
。DataContext
是继承的,但您也可以显式设置它。将代理的可见性设置为折叠
,使其隐藏
<Grid>
<!-- ...grid definitions. -->
<FrameworkElement Grid.Row="42" x:Name="ProxyElement" Visibility="Collapsed"/>
</Grid>
更好的方法是使用Freezable
作为绑定代理。即使在可视化树之外,它们也可以访问数据上下文。请参阅此图,其中显示了一种使用自定义BindingProxy
的方法,该方法也适用于资源
,而不适用于x:Reference
,感谢我提出的解决方案和更好解决方案的建议。
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
//Do the conversion
}
<Grid>
<!-- ...grid definitions. -->
<FrameworkElement Grid.Row="42" x:Name="ProxyElement" Visibility="Collapsed"/>
</Grid>
<DataGridTextColumn.Visibility>
<MultiBinding Converter="{StaticResource MyMultiValueConverter}">
<Binding Source="{x:Reference ProxyElement}" Path="DataContext.InitialDepositAmount"/>
<Binding Source="1"/>
</MultiBinding>
</DataGridTextColumn.Visibility>