C# WPF: ControlTemplate + TemplateBinding не работает для Button - PullRequest
0 голосов
/ 23 апреля 2020

Проблема была исправлена ​​

У меня проблема с использованием ControlTemplate. Я хочу «реструктурировать» кнопку, фактически в 2 столбца, используя сетку. Однако это не проблема. Используя TemplateBindning и ContentPresenter, я не могу заставить эту работу работать.

Я смотрел на следующий пример MS для ControlTemplates (https://docs.microsoft.com/en-us/dotnet/desktop-wpf/themes/how-to-create-apply-template), и, похоже, он работает нормально, тем не менее, я не могу заставить свой код работать, единственное отличие состоит в том, что я пытаюсь «перестроить» кнопку как таковую, поскольку вместо эллипса я использую прямоугольник, и поэтому я считаю, что это в чем проблема, но я не понимаю, почему она не работает? (Даже после поиска в Интернете некоторое время).

Вот мой код ControlTemplate:

<Window.Resources>
     <ControlTemplate x:Key="taskButton" TargetType="Button">
         <Grid>
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="2*"/>
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>

             <Rectangle Height="50" Fill="{TemplateBinding Background}"/>
             <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />

         </Grid>
     </ControlTemplate>
</Window.Resources>

Фактический XAML для кнопки:

<Button Template="{StaticResource taskButton}" Background="Blue">Hello</Button>

Но это не похоже на работу? Кажется, это признает части прямоугольника, так как контур кнопки на конструкторе увеличивается до 50px, и контур сетки можно увидеть, но содержимое и цвет не меняются.

Я относительно новый для ControlTemplates, и поэтому любая помощь здесь будет высоко ценится.

...