0

私は次のListViewように宣言しています:

<ListView x:Name="lvRSU" Margin="3" Background="#84978F" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding rsus}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Grid.Row="0" VerticalAlignment="Center">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="90"/>
                    <ColumnDefinition Width="240"/>
                    <ColumnDefinition Width="40"/>
                    <ColumnDefinition Width="40"/>
                    <ColumnDefinition Width="110"/>
                    <ColumnDefinition Width="100"/>
                </Grid.ColumnDefinitions>
                <Label Content="{Binding Name}" ContentStringFormat="{}{0} Path" VerticalAlignment="Center" />
                <TextBox Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="2,0,0,0"/>
                <Button Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="22" Height="22" MaxHeight="22" MaxWidth="22" ToolTip="Open .rsu file" SnapsToDevicePixels="True">
                      <Image Source="Resources/Folder16.png" Stretch="Uniform" ></Image>
                </Button>
                <CheckBox Grid.Column="3"  Content="En" VerticalAlignment="Center"/>
                <ComboBox ItemsSource="{Binding sensorTypes}" Grid.Column="4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
                     <ComboBox.ItemTemplate>
                          <DataTemplate>
                               <TextBlock Text="{Binding}"/>
                          </DataTemplate>
                     </ComboBox.ItemTemplate>
                 </ComboBox>
                 <CheckBox Grid.Column="5"  Content="{Binding Name}" ContentStringFormat="Inv {0}" VerticalAlignment="Center" Margin="2,1,1,1"/>
              </Grid>
         </DataTemplate>
     </ListView.ItemTemplate>
</ListView>

そして.csファイルには次の接続があります:

public ReadOnlyObservableCollection<string> _sensorTypes = 
      new ReadOnlyObservableCollection<string>(new ObservableCollection<string>() { "1", "2"});

public ReadOnlyObservableCollection<string> sensorTypes
{
    get { return _sensorTypes; }
}

またDataContext、 ListView に設定します:

lvRSU.DataContext = this;

しかし、コンボボックス内のアイテムをまったく取得できません。グリッドの内側にあるため、問題があるのではないでしょうか?

大丈夫です今わかりました。

 ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=ListView},Path=DataContext.sensorTypes}"

これが違いを生んだ。ある時点でコンボボックスを含む ListView の DataContext に移動し、そこからパスを設定します。ありがとう。

4

2 に答える 2

0

私はそれができると思います:

lvRSU.DataContext = this.sensorTypes;

または、お気づきのように、XAML でバインドすることをお勧めします。

ItemsSource="{Binding sensorTypes, RelativeSource={RelativeSource AncestorType=ListView}}"
于 2013-10-28T11:11:44.287 に答える
0

あなたのコードに問題は見つかりません。したがって、この方法を使用してデータ バインディングをデバッグすることをお勧めします。IValueConverter を使用して DataBinding をデバッグする

バグを見つけて、みんなに教えてくれることを願っています。幸運を!

于 2013-10-28T11:10:12.960 に答える