![](/img/trans.png)
[英]WPF MVVM Caliburn Micro - Notify property on ViewModel from another ViewModel
[英]set the DataGridTextColumn visibilty based on property returned through ViewModel. following MVVM Caliburn
根据通过 ViewModel 返回的属性设置 DataGridTextColumn 可见性。 我在视图中添加了以下代码
xmlns:shared="clr-namespace:IKEA.CountryRange.Local.Shared"
<Window.Resources><shared:VisibilityConverterx:Key="BoolToVisibilityConverter"></shared:VisibilityConverter>
</Window.Resources>
<DataGridTextColumn Header="Price" Width="auto" Visibility="{Binding _ViewPurchasePrices, Converter={StaticResource BoolToVisibilityConverter}}"/>
在共享文件夹中创建一个类
public class VisibilityConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var v = value;
if (v == "true")
return "Visible";
else
return "Collapsed";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
在 ViewModel 中,我绑定了 Property 的布尔值。
但是这段代码没有用。 请就此提出建议。
由于DataGridTextColumn
或任何其他受支持的数据网格列不是 datagrid 可视化树的一部分,因此它们不继承 datagrid/windnow 的 DataContext。 因为,它们不在可视化树中,因此任何使用 RelativeSource 获取 DataContext 的尝试都不起作用。
可以创建代理元素来绑定用户控件/窗口的数据上下文; 使用该代理元素绑定 DataGridTextColumn 的可见性。 例如:
<Grid>
<Grid.Resources>
<FrameworkElement x:Key="ProxyElement" DataContext="{Binding}"></FrameworkElement>
</Grid.Resources>
<ContentControl Visibility="Collapsed" Content="{StaticResource ProxyElement}"></ContentControl>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Source={StaticResource ProxyElement}, Path=DataContext._ViewPurchasePrices, Converter={StaticResource BoolToVisibilityConverter}}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
var v = value as bool?; // null if not a boolean
if (v == true)
return Visibility.Visible;
else
return Visibility.Collapsed;
为什么不绑定 DataGridTextColumn 的可见性属性? 那你就不需要转换器了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.