如何向ModernButton的内容添加其他控件?

时间:2015-12-17 20:42:48

标签: c# wpf modern-ui

我正在尝试将StackPanel放入ModernButton。这是XAML:

<mui:ModernButton Margin="0,50"
              IconHeight="10"
              IconWidth="10"
              Background="#FF68217A"
              HorizontalAlignment="Center"
              Foreground="Black">
    <StackPanel>
        <TextBlock>George</TextBlock>
        <TextBlock>Washington</TextBlock>
    </StackPanel>

当我把它放到位时,我会看到按钮上显示“System.Windows.Controls.Stackpanel”。我不明白为什么。 ModernButton是WPF Button类的子级,如果替换mui:ModernButton,则可以正常工作。 (当然你必须摆脱IconHeight和IconWidth,但重点是它有效。)

那么为什么我的控件不能在ModernButton内正确呈现?

1 个答案:

答案 0 :(得分:0)

问题是ModernButton只是一个模糊不清的控件。我会向MUI project提交一个新问题。无论如何,证明是here,除了显示文本之外,模板不会让你受益匪浅。您要做的是编辑ModernButton的模板。右键单击XAML设计器中的ModernButton&gt;编辑模板&gt;编辑副本...&gt;好的&gt;转到XAML视图。在那里你会想要做类似的事情:

<Grid Grid.Column="1" >
    <!-- <TextBlock DataContext="{TemplateBinding Content}"
               Visibility="{Binding Converter={StaticResource NullOrEmptyStringToVisibilityConverter}, ConverterParameter=inverse}"
               Text="{Binding Converter={StaticResource ToLowerConverter}}"
               TextTrimming="CharacterEllipsis"
               Foreground="{TemplateBinding Foreground}"
               Margin="4,-1,0,0"
               VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> -->
    <ContentPresenter Focusable="False"
                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                      Margin="{TemplateBinding Padding}"
                      RecognizesAccessKey="True"
                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Grid>

简而言之,您将TextBlock替换为ContentPresenter,然后您就可以在按钮上显示任何内容。