2

私の WPF アプリケーションには、Grid コントロール内にある ComboBox コントロールがあります。XAML では、ComboBox に名前を割り当てています。

<DataGridTemplateColumn Header="Status">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock VerticalAlignment="Center" Text="{Binding name_ru}" Width="Auto" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox Name="stcom" Style="{DynamicResource ComboBoxStyle}" SelectionChanged="status_SelectionChanged" Height="auto" Width="Auto">
                 <ComboBox.BorderBrush>
                     <SolidColorBrush Color="{DynamicResource Color1}"/>
                 </ComboBox.BorderBrush>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

メソッド FindName(string) を使用して、関連する名前で ComboBox を参照しようとしています。

ComboBox stcom
        {
            get
            {
                return (ComboBox)FindName("stcom");
            }
        }


 if (stcom != null)
            {
                stcom.ItemsSource = list;
            }

stcomしかし、参照が null のままであるため、明らかにコントロールが見つかりません。

問題は、name プロパティを使用して ComboBox を参照する方法です。

4

3 に答える 3

2

最初に、それが適用されたコントロール テンプレートにアクセスする必要があります。次に、テンプレートの要素を名前で見つけることができます。MSDNナレッジベースをご覧ください:

于 2012-07-11T08:52:43.293 に答える
0

DataTemplateの一部である名前のコントロールにアクセスすることはできません。

たとえば、いくつかの回避策について読んでみることができます

たとえば、このトピックを発行しているSOに関する数十の投稿もご覧ください。

于 2012-07-11T08:49:57.520 に答える