2

ObservableCollection にバインドされたデータグリッドをセットアップしました。このグリッドの 1 つの列は、親データグリッドがバインドされている ObservableCollection からデータを取得する必要があるユーザー コントロールによって設定されます。子ユーザー コントロールをバインドして、ObervableCollection のデータを使用することはできますか? 私が使用しているXAMLは次のとおりです。

<Window x:Class="Hotspots_Control.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Hotspots_Control"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <local:viewModel/>
</Window.DataContext>
<DataGrid ItemsSource="{Binding areaList}" Name="hotspotsGrid" AutoGenerateColumns="False" CanUserAddRows="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Area" Binding="{Binding Path=area}" IsReadOnly="True"/>
        <DataGridTemplateColumn Header="Alarms">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <local:AlarmView/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

グリッドは「viewModel」オブジェクト内の「areaList」にバインドされています。ObservableCollection 内の各オブジェクトにアクセスするには、AlarmView ユーザー コントロールを取得する必要があります。これを行う方法はありますか?

4

2 に答える 2

2

プロパティを使用してDataContext、バインドされたオブジェクトを設定します。

<DataTemplate>
  <local:AlarmView DataContext="{Binding}"/>
</DataTemplate>

DataTemplate は既に にバインドされているためareaList、直接バインドで DataContext を設定できます。ここから、子ビューはareaListオブジェクトにアクセスできます。

于 2012-06-05T15:40:32.393 に答える
0

リストをエンティティ vm のコンストラクターに渡すと、プライベート メンバーに格納できるため、そこからアクセスできます。

より適切な別の解決策があるかもしれませんが、そのためには問題について十分な詳細がありません。

于 2012-06-05T15:30:18.727 に答える