現在、WPFでcss media
/Android layout
のような動作を作成しています。基本的には、画面幅の3つの値(800px、1280px、および1920px)に基づいた解像度のカテゴリがあります。解像度の変更を聞きながらコンバータを使用して半固定サイズのWPFウィンドウを自動的にサイズ変更する
対応する3つのリソースディクショナリには、UI要素のキーを持つInt32
の値が含まれています。サンプルエントリは、次のとおり
<sys:Int32 x:Key="initial_screen_width">1600</sys:Int32>
マイIConverter
単に画面解像度レベル(画面幅に基づくもの)をチェックし、対応する解像度の辞書内のキーを返し:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int dimension = 0;
object value2 = value;
string resourceId = (string)parameter;
if(resourceId is string)
{
dimension = GetDimension(resourceId, GetResolutionLevel());
}
return dimension;
}
最後に、I単にコンバータとUserControl
属性をバインド:対応する寸法が返されますfine--
<UserControl
...
Height="{Binding Converter={StaticResource LayoutDimensionConverter}, ConverterParameter=initial_screen_height}"
...
>
それは完璧に動作します。しかし、解像度の変更を処理する方法(UIを更新して再度調整する方法)を見つけることができないようです。私は
はので、私は静的変数などのシステムパラメータを使用してみましたUpdateTargetは
- WPF Force rebind
- WPF Binding from System.Windows.SystemParameters.PrimaryScreenWidth with a Converterの使用に関するいくつかのリンクを見つけましたが、解像度の変更が検出されません。これを行う方法はありますか?