0

私はこの修正された ComboBox を持っています:

<ContentControl Content="{Binding LoadedFiles}" >
   <ContentControl.ContentTemplate>
      <DataTemplate>
         <Grid>
            <ComboBox x:Name="cb" ItemsSource="{Binding}" Width="150" Margin="5"   SelectedItem="{Binding SelectedFile}" DisplayMemberPath="FileName"/>
            <TextBlock x:Name="tb" Text="Select a file" IsHitTestVisible="False" Visibility="Hidden" Width="150" VerticalAlignment="Center" Margin="10 0 0 0" FontSize="12" FontStyle="Italic" Foreground="#7FFFFFFF" />
         </Grid>
         <DataTemplate.Triggers>
            <Trigger SourceName="cb" Property="SelectedItem" Value="{x:Null}">
               <Setter TargetName="tb" Property="Visibility" Value="Visible"/>
            </Trigger>
         </DataTemplate.Triggers>
      </DataTemplate>
   </ContentControl.ContentTemplate>
</ContentControl>

選択した項目が null の場合にデフォルトのテキストを表示します。ItemsSource はうまく機能します。また、ContentControl を使用する前は、コンボボックス全体がうまく機能していました。コンボボックスの選択を変更しても、実際のオブジェクトは初期化したときのままです。

これで問題が解決することを読みました:

SelectedItem="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedFile}"

しかし、それは私には役に立たない、ここで何が起こっているのですか? 以前のようにバインドできないのはなぜですか?

4

1 に答える 1

0

エラー... MSDNのBindingBase.TargetNullValueプロパティページを参照して、データ バインドされたプロパティがnull. 次のように使用します。

<ComboBox x:Name="cb" ItemsSource="{Binding}" Width="150" Margin="5"   
    SelectedItem="{Binding SelectedFile, TargetNullValue='Select a file'}" 
    DisplayMemberPath="FileName"/>

車輪を再発明しても意味がありません。

于 2013-09-11T11:10:31.757 に答える