私はXAMLが初めてで、より良い方法を探しています。 コードが変更されたときにすぐにUIが更新されないことに気付きました。XAML INotifyProperty UIを更新するように変更しました
私はINotifyPropertyChanged
インターフェイスを使用したいので、GUIは変更と更新について通知されます。
最初はXAMLで、可視性をhidden(TextBlockまたはimageの場合)またはtrue(isCheckまたはisEnabled)に設定しました。
コードの背後にあるプログラムで、私はvisibleかfalseに設定します。
しかし、GUIは更新されません。以下は私のページの枠組みです。 ボタンをクリックすると、すべてのプロパティが変更(可視に変更)されます。
唯一の違いは、複数のページがあり、ボタンを使用してページ間を移動できることです。ユーザーがボタンをクリックすると、次のページに進み、UIを更新します。
今私はUIを更新するために変更を加えた後にUpdateGUI()
を使用しています。 UpdateGUI();
public void UpdateUI()
{
//remove this function from the code below.
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));
}
MainWindow.xaml
<Grid Margin=" 0, 20, 0, 0">
<StackPanel Margin="20, 0, 0, 0">
<StackPanel Orientation="Horizontal" >
<Image x:Name="CheckBox1Img" Margin="0, 2, 0, 0" Source="{StaticResource doneCheckImage}" Visibility="Hidden"/>
<CheckBox x:Name="Checkbox1" Content="CheckBox1"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image x:Name="CheckBox2Img" Margin="0, 2, 0, 0" Source="{StaticResource doneCheckImage}" Visibility="Hidden"/>
<CheckBox x:Name="Checkbox2" Content="CheckBox 2"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image x:Name="CheckBox3Img" Margin="0, 2, 0, 0" Source="{StaticResource doneCheckImage}" Visibility="Hidden"/>
<CheckBox x:Name="CheckBox3" Content="CheckBox 3"/>
</StackPanel>
<Button x:Name="Button1" Click="Button1_Click" Height="20" Content="Click" Width="50"/>
<Button x:Name="Button2" Click="Button2_Click" Height="20" Content="Button to disable" Width="200"/>
</StackPanel>
</Grid>
MainWindow.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
Checkbox1.IsEnabled = false;
Checkbox2.IsEnabled = false;
Checkbox3.IsEnabled = false;
CheckBox1Img.Visibility = Visibility.Visible;
CheckBox2Img.Visibility = Visibility.Visible;
CheckBox3Img.Visibility = Visibility.Visible;
Button2.IsEnabled = false;
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
}
App.XAMLが
<Application.Resources>
<!-- Blue Check Image -->
<BitmapImage x:Key="doneCheckImage" UriSource="blueCheck.png" />
</Application.Resources>
MVVMパターンを調べましたか? UpdateUI関数の呼び出し方法 – Firoz
コードの背後からコントロールのプロパティを設定すると、コントロールがすぐに更新されるはずです。 – slugster