Datagrid未更新,datagridtextcolumn上的Visibility属性

时间:2012-09-26 21:11:03

标签: mvvm wpfdatagrid

所以你可以看到ID列应该隐藏但不是。并且调试器在xaml文件中显示IDVisible的值为“隐藏”但它永远不会进入窗口。我也在调用属性更改方法。我做错了什么,ID列应该消失,或者至少这是我想要做的。

MainWindow.xaml

这是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>

1 个答案:

答案 0 :(得分:1)

我会检查你的Visible绑定,因为它很有可能失败。这个page解释了一些可以使用的方法。我个人更喜欢调整跟踪级别。

我认为绑定失败的原因是由于你的DataContext(我假设你已经在某处设置)没有进入DataGrid的列本身。这个page解释了我过去用来解决这个问题的一个修复。我想我最初发现这篇文章来自page,还有其他一些知道WPF'Gotchas'的好消息。