0
私はいくつかの機能を追加するためにWindow
を拡張しましたが、これは特定のウィンドウサイズを指定したり、コンテンツのサイズを変更できる機能です。コードビハインドは、現在MVVM化されていない、このように見えます。WPF DataTriggerの設定者がウィンドウの幅と高さを変更しない
public partial class DialogWindow : Window
{
public bool HasSize { get; set; }
public Size Size { get; set; }
}
XAMLは、その後、次のようになります。コンテンツにサイズ変更
<Window ... Name="DialogWindowElement">
<Window.Style>
<Style TargetType="Window">
<Style.Triggers>
<DataTrigger Binding="{Binding HasSize, ElementName=DialogWindowElement}" Value="True">
<Setter Property="Width" Value="{Binding Size.Width, ElementName=DialogWindowElement}" />
<Setter Property="Height" Value="{Binding Size.Height, ElementName=DialogWindowElement}" />
</DataTrigger>
<DataTrigger Binding="{Binding HasSize, ElementName=DialogWindowElement}" Value="False">
<Setter Property="SizeToContent" Value="WidthAndHeight" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Style>
<ContentControl ...>
<!-- Content control using DataTemplates to determine content -->
</ContentControl>
</Window>
は大丈夫動作するようだが、指定された幅と高さは適用されません。大規模なコンテンツは、制限されずに後でサイズ変更可能ではなく、必要なすべてのサイズに展開されます。
スヌープなどのツールはトリガーが発生することを意味しますが、セッターは効果がないようです。
ここに何か不足していますか?
編集:これは私の作品いくつかのより多くのコンテキストに
幅と高さのバインディングはTwoWayである必要があります。例えば、ここ:https://stackoverflow.com/q/2673600/1136211 – Clemens
@Clemens喜びはありません。上記の「TwoWay」にWidthとHeightバインディングを設定し、バインディングを2つの別々のWidthとHeightの二重のプロパティに分離しようとしました。いずれの方法もウィンドウの大きさに従わなかった。 – Dan
サンプルコードはちょっと混乱します。実際にはHasSizeとSizeプロパティを設定していますか? XAMLでウィンドウの高さと幅のプロパティを設定していますか? – mm8