Пользовательский интерфейс WPF не обновляет текстовый блок в шаблоне управления - PullRequest
0 голосов
/ 13 июня 2018

Я сделал образец XAML и C # для WPF ниже:

XAML:

<Button Name="btn">
    <Button.Template>
        <ControlTemplate>
            <Grid>
                <TextBlock Name="textblock1" Text="sampletext1" />
            <Grid>
        <ControlTemplate>
    </Button.Template>
</Button>

C #:

Grid grid = btn.Template.LoadContent() as Grid;
var textblock = grid.FindName("textblock1") as TextBlock;
textblock.Text = "sampletext2";

Мне удалось получить и изменитьтекстовый блок текст в коде позади, но кажется, что пользовательский интерфейс не обновляет его.Могу ли я узнать, как это решить?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Измените свой код в любом из событий

 public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
            this.Loaded += MainWindow_Loaded;

        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            TextBlock textBlockInTemplate = (TextBlock)btn.Template.FindName("textblock1", btn);
            textBlockInTemplate.Text = "SampleText2";
        }

    } 
0 голосов
/ 13 июня 2018

Ваш код создает копию значения текстового блока, а затем присваивает свойству «Текст» значение копии.Вы никогда не измените текст внутри кнопки.Ваш текстовый блок называется textblock1, текстовый блок был инициализирован из textblock1, но как только это будет сделано, они не связаны друг с другом.

Прошло некоторое время с тех пор, как я использовал WPF, но вам нужно переназначить текстовое значение длякнопка использует что-то вроде этого:

textblock1.Text = textblock;

или даже проще:

textblock1.Text = "sampletext2";
...