【问题标题】:Datagrid not updating, Visibility property on datagridtextcolumnDatagrid 未更新,datagridtextcolumn 上的 Visibility 属性
【发布时间】:2012-09-26 21:11:03
【问题描述】:

所以你可以看到 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>

【问题讨论】:

    标签: mvvm wpfdatagrid


    【解决方案1】:

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

    我认为绑定失败的原因是您的 DataContext(我假设您已将其设置在某处)本身没有访问 DataGrid 的列。这个page 解释了我过去用来解决这个问题的一个修复程序。我想我最初是从page 中找到那篇文章,其中有几个其他值得了解的 WPF 'Gotchas'。

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 2011-11-30
      • 2013-03-14
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2012-10-26
      • 2013-04-21
      • 1970-01-01
      相关资源
      最近更新 更多