Mvvm Datagrid未更新,datagridtextcolumn上的可见性属性
因此,正如您所看到的,ID列应该是隐藏的,但它不是。调试器在xaml文件中将IDVisible的值显示为“隐藏”,但它从未将其显示到窗口中。我也在调用一个属性更改的方法。我做错了什么,ID列应该消失,或者至少我正试图这么做 这是MainWindowViewModel.cs的代码Mvvm Datagrid未更新,datagridtextcolumn上的可见性属性,mvvm,wpfdatagrid,Mvvm,Wpfdatagrid,因此,正如您所看到的,ID列应该是隐藏的,但它不是。调试器在xaml文件中将IDVisible的值显示为“隐藏”,但它从未将其显示到窗口中。我也在调用一个属性更改的方法。我做错了什么,ID列应该消失,或者至少我正试图这么做 这是MainWindowViewModel.cs的代码 namespace MagicDB { class MainWindowViewModel : ObservableObject { private CardDB _cards; private Com
namespace MagicDB
{
class MainWindowViewModel : ObservableObject
{
private CardDB _cards;
private Command _InitCardDB;
private Visibility _IDVisible;
public CardDB Cards
{
get { return _cards; }
set { _cards = value; OnPropertyChanged("Cards"); }
}
public Visibility IDVisible
{
get { return _IDVisible; }
set { _IDVisible = value; VerifyPropertyName("IDVisible"); OnPropertyChanged("IDVisible"); }
}
public MainWindowViewModel()
{
IDVisible = Visibility.Hidden;
_InitCardDB = new Command(InitDB, true);
Cards = new CardDB();
}
还有xaml文件
<Window x:Class="WpfDataGrid.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="500" Height="500">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="450*" />
</Grid.RowDefinitions>
<DataGrid AutoGenerateColumns="False"
HorizontalAlignment="Left"
Name="dataGrid1"
VerticalAlignment="Top"
ItemsSource="{Binding Cards.cardDB}"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserResizeRows="False"
CanUserSortColumns="True"
AlternatingRowBackground="LightBlue"
Width="480" Height="auto" Grid.Row="1" IsSynchronizedWithCurrentItem="True"
>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding CardID}" Width="25" Visibility="{Binding IDVisible,Mode=TwoWay}"></DataGridTextColumn>
我会检查您的可见绑定,因为它很可能会失败。这说明了一些可以使用的方法。我个人更喜欢调整跟踪级别
我认为绑定失败的原因是因为您的DataContext(我假设您已经在某个地方设置了它)没有到达DataGrid的列本身。这就解释了我过去用来解决这个问题的修复方法。我想我最初在这篇文章中发现了其他几个好的WPF“Gotchas”。我会检查您的可见绑定,因为它很可能失败。这说明了一些可以使用的方法。我个人更喜欢调整跟踪级别 我认为绑定失败的原因是因为您的DataContext(我假设您已经在某个地方设置了它)没有到达DataGrid的列本身。这就解释了我过去用来解决这个问题的修复方法。我想我最初是从这篇文章中发现的,它还有其他几个好的WPF“Gotchas”