C# UWP TextBlock 文本以编程方式更改按钮样式

标签 c# xaml win-universal-app windows-10 uwp-xaml

我有一个资源样式的按钮。我想更改按钮内容中 TextBlock 的文本。我没有找到任何解决方案。

有什么想法吗?

<Style x:Key="NavigationLogoutButtonStyle" TargetType="Button" BasedOn="{StaticResource NavigationBackButtonNormalStyle}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Height" Value="48"/>
<Setter Property="Width" Value="NaN"/>
<Setter Property="MinWidth" Value="48"/>
<Setter Property="AutomationProperties.Name" Value="Logout"/>
<Setter Property="Content">
    <Setter.Value>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="48" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <FontIcon Grid.Column="0" FontSize="16" Glyph="&#xE1E0;" VerticalAlignment="Center" HorizontalAlignment="Center"/>
            <StackPanel Grid.Column="1" Orientation="Vertical">
                <TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="!!!TEXT HERE PROGRAMATICALLY!!!" Foreground="{StaticResource MainColorBrush}" FontSize="13" VerticalAlignment="Center" />
                <TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{StaticResource LogoutButtonText}" VerticalAlignment="Center" />
            </StackPanel>
        </Grid>
    </Setter.Value>
</Setter>

最佳答案

你可以做一个 hack,改变行:

<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="!!!TEXT HERE PROGRAMATICALLY!!!" Foreground="{StaticResource MainColorBrush}" FontSize="13" VerticalAlignment="Center" />

<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{Binding Tag}" Foreground="{StaticResource MainColorBrush}" FontSize="13" VerticalAlignment="Center" />

并在代码中设置 Button 的 Tag 属性。

正确的方法是声明新的 DependencyProperty 类型的 CustomButton 字符串,它继承自 Button。然后将 Style 应用于新的 CustomButton 类型。将 Text 属性绑定(bind)到新创建的 DependencyProperty

关于C# UWP TextBlock 文本以编程方式更改按钮样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36695711/

相关文章:

c# - Xamarin:设置 UITextField 高度

c# - 带冒号的 HttpRequestMessage UserAgent

c# - Generic.xaml - 引用样式

wpf - 获取 ItemsControl 中的选定项目

c# - 如何在第一次打开应用程序时只启动一次页面?

c# - 如何将 Onedrive<Item> 的内容写入本地文件

c# - 如何在同一解决方案中将通用 Windows 应用程序与旧版 .Net 4.5 应用程序进行实时通信。工控机?

c# - 将动态表达式传递给代码优先 EF 存储库中的排序依据

c# - unity “Can not play a disabled audio source”

wpf - MVVMCross,WPF,XAML “Unable to resolve the binding creator - have you initialized Windows Binding”