0

今日、DataGridColumn のヘッダーを ViewModel にバインドすることに関する奇妙な動作に気付きました。

次のバインディングは完全に機能します (DataGrid の名前は MyGrid です)。

<DataGridTextColumn Binding="{Binding Name}"  Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
                                <DataGridTextColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
                                    </DataTemplate>
                                </DataGridTextColumn.HeaderTemplate>
 </DataGridTextColumn>

以下は機能しませんが (MyGrid が見つからないと文句を言います):

<DataGridTextColumn Binding="{Binding Name}"  Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
    <DataGridTextColumn.Header>
        <TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

Template または UIElement で直接ビューモデルにバインドすることの違いは何ですか?

4

1 に答える 1

0

これはうまくいくはずです

<TextBlock Text="{Binding MyDeviceViewModel.CategoryHeader}"/>

同じコントロール内にいる場合は、ElementName プロパティを参照する必要はありません

HTH

于 2010-08-24T18:27:45.787 に答える