Uwp 如何在静态类中访问textblock或UI元素并设置属性
如何从其他静态类或静态类帮助程序访问XAML页面中的textblock、textBox、矩形框或UI元素以执行任务。Uwp 如何在静态类中访问textblock或UI元素并设置属性,uwp,uwp-xaml,Uwp,Uwp Xaml,如何从其他静态类或静态类帮助程序访问XAML页面中的textblock、textBox、矩形框或UI元素以执行任务。 我有这个问题: XAML页面中的文本块: 1) 如何在静态类中访问此textblock以设置textblock的前景色或通过静态类设置背景矩形框或其他UI元素: 2) 如何将textBlock传递给静态类并按如下所示进行设置 textBlock.Foreground = Brushes.Navy; 谢谢尽管你的要求通常不是一个好主意,但它是可以做到的(但还是有更好的方法) 因此
我有这个问题:
XAML页面中的文本块: 1) 如何在静态类中访问此textblock以设置textblock的前景色或通过静态类设置背景矩形框或其他UI元素:
2) 如何将textBlock传递给静态类并按如下所示进行设置
textBlock.Foreground = Brushes.Navy;
谢谢尽管你的要求通常不是一个好主意,但它是可以做到的(但还是有更好的方法) 因此,基本上可以将Dispatcher和TextBox分配给PageOnNavigatedTo方法中静态类中的某些字段或属性 您需要分配两者,因为您只能从UI线程访问TextBox,并且可以通过Dispatcher.RunAsync方法调用它 编辑:
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
myStaticClass.TextBox=TextBox;
myStaticClass.Dispatcher=调度程序;
}
您可以使用绑定:
Xaml:
C类:
编辑:更改前景色的示例
Xaml:
MainPage.cs:
public MainPage()
{
this.InitializeComponent();
ViewModel daViewModel = new ViewModel();
DataContext = daViewModel;
}
我需要将特定的TextBlock传递给静态类,以便在TextBlock满足特定条件时设置其前景色。我看不出你在说什么。你能告诉我如何通过一个静态类来处理这个问题吗。感谢在我的静态类中,我不能使用关键字:this this.TextBlock=\u passInTextBlock.this是静态的,我的答案与此一致。您可能正在使用静态word来表示其他内容,或者可能存在“您的”静态类,但无论哪种方式,如果希望得到答案,您都需要提供更多信息。这种绑定方法很好。你能告诉我如何改变textblock的前景色吗。我需要一个xaml中的矩形,当某些条件满足时,我需要更改其背景颜色,就像TextBlock我更改了答案一样。
class YourClass : INotifyPropertyChanged
{
private string _changeTextBlockText;
public string ChangeTextBlockText{
get
{
return _changeTextBlockText;
}
set
{
_changeTextBlockText= value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock x:Name="textBlockHex" HorizontalAlignment="Left" Margin="90,180,0,0" TextWrapping="Wrap" Text="hello" VerticalAlignment="Top" Height="75" Width="170" Foreground="{Binding TextBlockColorInHex}"/>
</Grid>
class ViewModel : INotifyPropertyChanged
{
public string TextBlockColorInHex
{
get
{
return _textBlockColorInHex;
}
set
{
this._textBlockColorInHex = value;
this.OnPropertyChanged();
}
}
public ViewModel()
{
SetColorFromThisClass("#ff0000");
}
private void SetColorFromThisClass(string colorInHex)
{
TextBlockColorInHex = colorInHex;
}
private string _textBlockColorInHex;
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public MainPage()
{
this.InitializeComponent();
ViewModel daViewModel = new ViewModel();
DataContext = daViewModel;
}