110,499
社区成员
发帖
与我相关
我的任务
分享
mc:Ignorable="d" WindowStartupLocation="CenterScreen" Title="MainWindow" Style="{StaticResource BaseWindowStyle}">
<Window.Resources>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="MyLightMode">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="api:LightMode"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="MySortingLogStyle">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="e:ESortingLogStyle"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<valueConverter:ChannelValueConverter x:Key="ChannelValueConverter"/>
<valueConverter:SortingLogStyleValueConverter x:Key="SortingLogStyleValueConverter"/>
</Window.Resources>
<i:Interaction.Triggers>
<prism:InteractionRequestTrigger SourceObject="{Binding ShowMessageBoxRequest}">
<utils:CustomPopupWindowAction CenterOverAssociatedObject="True" IsModal="True">
<prism:PopupWindowAction.WindowContent>
<dlg:ShowMessageUserControl/>
</prism:PopupWindowAction.WindowContent>
</utils:CustomPopupWindowAction>
</prism:InteractionRequestTrigger>
<prism:InteractionRequestTrigger SourceObject="{Binding ProcessSortingUIRequest}">
<ta:ProcessSortingUITriggerAction/>
</prism:InteractionRequestTrigger>
</i:Interaction.Triggers>
<Grid>
<Viewbox Stretch="Fill" >
<Canvas Height="648" Width="1024">
<Label Content="{Binding CurrentErrorInfo}" Canvas.Top="597" Background="Red" Foreground="White" Width="1013" Height="36">
<Label.Style>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource ContentAlignmentLabelStyle}">
<Setter Property="Padding" Value="3,3"/>
<Style.Triggers>
<Trigger Property="Content" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="Content" Value="">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
</Canvas>
</TabItem>
</TabControl>
<StackPanel Visibility="{Binding AutoTagSelfCheckingProgressVisibility,UpdateSourceTrigger=PropertyChanged}" Orientation="Horizontal" Background="White" Canvas.Left="1" Canvas.Top="515" Width="1023" Height="82">
<Label Content=" 自检中..." Style="{StaticResource ContentAlignmentLabelStyle}" />
<ProgressBar Height="42" Value="{Binding AutoTagSelfCheckingProgressValue, UpdateSourceTrigger=PropertyChanged}" Width="882" Minimum="0" Maximum="100" Margin="0,20" Foreground="Blue"/>
</StackPanel>
</Canvas>
</Viewbox>
</Grid>
</base:BaseWindow>
...:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
// 是不是invoke已经可以保证线程安全了?
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
string currentErrorInfo;
public string CurrentErrorInfo
{
get
{ return currentErrorInfo; }
set
{
if (currentErrorInfo != value)
{
Interlocked.Exchange(ref currentErrorInfo, value);
OnPropertyChanged(nameof(CurrentErrorInfo));
}
}
}
object autoTagSelfCheckingProgressVisibility = Visibility.Collapsed;
public Visibility AutoTagSelfCheckingProgressVisibility
{
get
{ return (Visibility)autoTagSelfCheckingProgressVisibility; }
set
{
if ((Visibility)autoTagSelfCheckingProgressVisibility != value)
{
Interlocked.Exchange(ref autoTagSelfCheckingProgressVisibility, value);
OnPropertyChanged(nameof(AutoTagSelfCheckingProgressVisibility));
}
}
}
ThreadPool.QueueUserWorkItem(obj =>
{
CurrentErrorInfo="111";
AutoTagSelfCheckingProgressVisibility = Visibility.Visible;
});
Application.Current.Dispatcher.Invoke((Action)(()=>{
AutoTagSelfCheckingProgressVisibility = Visibility.Visible;
}));
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
// 是不是invoke已经可以保证线程安全了?
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public MainWindow()
{
InitializeComponent();
this.ContentRendered += MainWindow_ContentRendered;
}
private void MainWindow_ContentRendered(object sender, EventArgs e)
{
this.DataContext = new MainViewModel();
Visibility="{Binding AutoTagSelfCheckingProgressVisibility,UpdateSourceTrigger=PropertyChanged}"
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
App.Current?.Dispatcher?.Invoke((Action)(() =>
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}));
}