私はOpenFileDialog.ShowDialogを呼び出すWPFアプリケーションを持っています。このダイアログが開いている間、私のアプリケーションが背景を変更し、新しい情報を表示する可能性があり、期待される動作です。OpenFileDialog WPFの背景を保存する
ユーザーがこのダイアログを閉じると、背景が復元されます。つまり、画面に古い情報があります。
OpenFileDialogがその背景を保存しないようにするにはどうすればよいですか?
これができない場合は、どうすればアプリケーションの再描画を強制できますか?
テキストを超えるサンプルコード、押しボタンと位置ダイアログ:
<Window x:Class="BackgroundOfFileOpen.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="10*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Viewbox Grid.Row="0">
<Label Content="{Binding textInBackground}" />
</Viewbox>
<Button Grid.Row="1" Click="OnOpenDialog">Open Dialog</Button>
</Grid>
using Microsoft.Win32;
using System.Windows;
using System.Threading;
using System;
namespace BackgroundOfFileOpen
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public string textInBackground
{
get { return (string)GetValue(textInBackgroundProperty); }
set { SetValue(textInBackgroundProperty, value); }
}
// Using a DependencyProperty as the backing store for textInBackground. This enables animation, styling, binding, etc...
public static readonly DependencyProperty textInBackgroundProperty =
DependencyProperty.Register("textInBackground", typeof(string), typeof(MainWindow), new UIPropertyMetadata("Text"));
public MainWindow()
{
InitializeComponent();
DataContext = this;
function += ModifyText;
}
private void OnOpenDialog(object sender, RoutedEventArgs e)
{
Thread backgroundThread = new Thread(ThreadMethod);
backgroundThread.Start();
OpenFileDialog dlg = new OpenFileDialog();
dlg.ShowDialog();
}
public void ModifyText()
{
if (Dispatcher.CheckAccess())
{
textInBackground += "x";
}
else
{
Dispatcher.BeginInvoke(new Action(() => { ModifyText(); }));
}
}
delegate void ModifyFunction();
static ModifyFunction function;
static void ThreadMethod()
{
Thread.Sleep(1000);
function();
}
}
}
おそらく、クリアするためにコードを共有する必要があります。 –
サンプルコードを元の投稿 – MTR