Uwp 如何在静态类中访问textblock或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页面中的textblock、textBox、矩形框或UI元素以执行任务。

我有这个问题:
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;

    }