私は一日中、テキストのデフォルト文字列を表示する方法を探していましたが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
必ずしも完全なウォークスルーを探しているわけではありません。解決策を導くのに十分なアドバイスです。