1

ご覧のとおり、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>
4

1 に答える 1

1

失敗する可能性が最も高いため、Visibleバインディングを確認します。このページでは、使用できるいくつかの方法について説明します。個人的には、トレース レベルを調整することを好みます。

バインディングが失敗する理由は、DataContext (どこかに設定したと思います) が DataGrid の列自体に到達していないためだと思います。このページでは、この問題を解決するために過去に使用した修正について説明します。このページの記事を最初に見つけたと思います.WPFの「Gotchas」を知っておくと便利な記事が他にもいくつかあります。

于 2012-09-27T12:26:34.677 に答える