Mvvm Datagrid未更新,datagridtextcolumn上的可见性属性

Mvvm Datagrid未更新,datagridtextcolumn上的可见性属性,mvvm,wpfdatagrid,Mvvm,Wpfdatagrid,因此,正如您所看到的,ID列应该是隐藏的,但它不是。调试器在xaml文件中将IDVisible的值显示为“隐藏”,但它从未将其显示到窗口中。我也在调用一个属性更改的方法。我做错了什么,ID列应该消失,或者至少我正试图这么做 这是MainWindowViewModel.cs的代码 namespace MagicDB { class MainWindowViewModel : ObservableObject { private CardDB _cards; private Com

因此,正如您所看到的,ID列应该是隐藏的,但它不是。调试器在xaml文件中将IDVisible的值显示为“隐藏”,但它从未将其显示到窗口中。我也在调用一个属性更改的方法。我做错了什么,ID列应该消失,或者至少我正试图这么做

这是MainWindowViewModel.cs的代码

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”