簡體   English   中英

WPF DataGrid和DataGridTemplateColumn標頭問題

[英]WPF DataGrid and DataGridTemplateColumn Header Problems

我有一段代碼的問題......

我有如下內容:

<DataGrid AutoGenerateColumns="False"
          CanUserAddRows="False"
          CanUserDeleteRows="False"
          ItemsSource="{Binding Path=RowData,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          RowHeaderWidth="0">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.Header>
                <CheckBox IsChecked="{Binding RelativeSource={RelativeSource Findancestor, AncestorType={x:Type UserControl}},Path=DataContext.AreAllSelected}">
                    Select All
                </CheckBox>
            </DataGridTemplateColumn.Header>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Path=IsSelected,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>  
    <DataGrid.Columns>
</DataGrid>

它位於View中,它源自UserControl類型 - 絕對可靠。 由於某種原因,綁定在TemplateColumn標頭中的CheckBox上失敗。 有什么不尋常之處在於我在其他視圖中使用了這個代碼 - 它的工作原理非常好並且沒有任何問題。 我總是首先創建ViewModel,並將其作為參數傳遞給View,其中DataContext在構造時設置為ViewModel,即

View(ViewModel myViewModel)
{
   InitializeComponent();
   DataContext = myViewModel;
}

ViewModel上有AreAllSelected屬性,但是我收到以下錯誤 - 所以我知道它沒有因某種原因找到祖先。

System.Windows.Data錯誤:4:無法找到綁定源,引用'RelativeSource FindAncestor,AncestorType ='System.Windows.Controls.UserControl',AncestorLevel ='1''。 BindingExpression:路徑= DataContext.AreAllSelected; 的DataItem = NULL; target元素是'CheckBox'(Name =''); target屬性是'IsChecked'(類型'Nullable`1')

奇怪的是,即使它不起作用,當我使用Snoop查看它時,它最初將無法工作。 當我查看Binding並深入研究它時,Binding現在可以工作了。

我想知道它是如何在Visual Tree級別構建它或者是什么? 正如我之前所說 - 我在其他視圖中已經完成了其他幾次,並且它們工作正常。 必須有一些奇怪的事情,我做錯了...

嘗試相反的方式:

View(ViewModel myViewModel)
{
   DataContext = myViewModel;
   InitializeComponent();
}

順便說一下,你應該使用HeaderTemplate模板標題。 單獨的標題只能是例如字符串值。

你放置了CheckBox。 這不是wpf的常用方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM