11

私は一日中、テキストのデフォルト文字列を表示する方法を探していましたがComboBox、最も近いものは、透かしを使用する例でした。アプリケーションを開くと、ComboBoxの Visibility プロパティが Collapsed に設定され、コマンドによって表示されます。残念ながら、透かしを追随させることはできません。これが私が取り組んでいるものです:

<Style x:Key="watermarkLabelStyle">
    <Setter Property="TextBlock.Foreground" Value="Black" />
    <Setter Property="FrameworkElement.Opacity" Value="0.8" />
    <Setter Property="TextBlock.FontSize" Value="12" />
    <Setter Property="TextBlock.FontStyle" Value="Italic" />
    <Setter Property="TextBlock.Margin" Value="8,4,4,4" />
    <Setter Property="TextBlock.Visibility" Value="{Binding Visible}" />
</Style>

{Binding Visible}ウィンドウ内の他のコントロールがそれにバインドされ、適切に動作しても、効果はありません。

<ComboBox ItemsSource="{Binding LeagueFormatsNode}"
          x:Name="leagueFormatComboBox"
          Grid.Column="0"
          Grid.Row="1"
          Grid.ColumnSpan="3"
          ScrollViewer.CanContentScroll="False"
          HorizontalContentAlignment="Stretch"
          Visibility="{Binding Visible}"
          Behaviors:WatermarkComboBoxBehavior.EnableWatermark="True"
          Behaviors:WatermarkComboBoxBehavior.Label="Select League Format"
          Behaviors:WatermarkComboBoxBehavior.LabelStyle="{StaticResource watermarkLabelStyle}" /> 

ビューモデルのVisibleプロパティ:

public Visibility Visible
{
    get { return _visibile; }
    set
    {
        if (_visibile == value)
            return;
        _visibile = value;
        RaisePropertyChanged(() => Visible);
    }
}

スタイルのセッターを動作させ、バインディングを登録するにはどうすればよいですか?

追加のコードが必要な場合は、喜んで提供します。


更新: Snoop は、TextBlock の Visibility プロパティでバインディング エラーを表示しています。DataContext タブで、「オブジェクトが null です」と表示されます。これを修正する方法を探していましたが、方法を理解できませんでした。誰かが私を正しい方向に押し進めるのに十分親切であるなら、私は確かにそれを感謝します. コードはここから来ましたhttp://archive.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PierreCode&ReleaseId=3546

必ずしも完全なウォークスルーを探しているわけではありません。解決策を導くのに十分なアドバイスです。

4

1 に答える 1