2012-12-06 67 views
0

而不是投票否定此问题,回答告诉我什么是错的!设置标签中的按钮内容(自定义控件)

我想在自定义控件的标签中设置按钮内容,因为当我使用它时,Content属性不可见并且按钮为空(无文本)。

Nocturno,谢谢,我是这个网站的新手,我把C [空间]变得尖锐,但是我的声望不允许我使用新的标签,所以我删除了这个。

我想把Button.Content属性放在自定义控件的标签中,因为模板取代了原来的按钮设计,我用它来保存代码,并且添加这些按钮时没有太多的代码。

<Button x:Class="WpfApplication1.UserControl1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="35" d:DesignWidth="273" Content="Button"> 
<Button.Template> 
    <ControlTemplate> 
     <Grid> 
      <Rectangle Name="rGridBack" StrokeThickness="1"> 
       <Rectangle.Fill> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF4D4D4D" Offset="1" /> 
         <GradientStop Color="#FF404040" Offset="0" /> 
        </LinearGradientBrush> 
       </Rectangle.Fill> 
       <Rectangle.Stroke> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF4F4F4F" Offset="0" /> 
         <GradientStop Color="#FF5B5B5B" Offset="1" /> 
        </LinearGradientBrush> 
       </Rectangle.Stroke> 
      </Rectangle> 
      <Rectangle Fill="#FF1E1E1E" Margin="1,1,1,1" Name="rThickness" /> 
      <Rectangle Margin="2,2,2,2" Name="rGridTop" StrokeThickness="1"> 
       <Rectangle.Fill> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF68686C" Offset="0" /> 
         <GradientStop Color="#FF474747" Offset="1" /> 
        </LinearGradientBrush> 
       </Rectangle.Fill> 
       <Rectangle.Stroke> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF7F7F7F" Offset="0" /> 
         <GradientStop Color="#FF575757" Offset="1" /> 
        </LinearGradientBrush> 
       </Rectangle.Stroke> 
      </Rectangle> 
    <!--This label is where I want to set the Button.Content property--> 
      <Label FontWeight="Normal" Foreground="White" HorizontalContentAlignment="Center" Name="tblckStep1Desc" Padding="0" VerticalContentAlignment="Center"> 
       <Label.Effect> 
        <DropShadowEffect BlurRadius="2" Color="Black" Direction="330" Opacity="0.7" ShadowDepth="1.5" /> 
       </Label.Effect> 
      </Label> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="Button.Content" Value=""> 
       <Setter Property="Content" TargetName="tblckStep1Desc"> 
       </Setter> 
      </Trigger> 
      <Trigger Property="UIElement.IsMouseOver" Value="True"> 
       <Setter Property="Shape.Fill" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF838383" Offset="0" /> 
          <GradientStop Color="#FF545454" Offset="1" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF595959" Offset="1" /> 
          <GradientStop Color="#FF929292" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridBack"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF414141" Offset="0" /> 
          <GradientStop Color="#FF565656" Offset="1" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Fill" TargetName="rThickness"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF181818" Offset="1" /> 
          <GradientStop Color="#FF181818" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
      <Trigger Property="UIElement.IsEnabled" Value="False"> 
       <Setter Property="Shape.Fill" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF68686C" Offset="0" /> 
          <GradientStop Color="#FF474747" Offset="1" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF7F7F7F" Offset="0" /> 
          <GradientStop Color="#FF575757" Offset="1" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridBack"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF4F4F4F" Offset="0" /> 
          <GradientStop Color="#FF5B5B5B" Offset="1" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Fill" TargetName="rThickness"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF1E1E1E" Offset="1" /> 
          <GradientStop Color="#FF1E1E1E" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Control.Foreground" TargetName="tblckStep1Desc"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF898989" Offset="1" /> 
          <GradientStop Color="#FF898989" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
      <Trigger Property="ButtonBase.IsPressed" Value="True"> 
       <Setter Property="Shape.Fill" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF313131" Offset="1" /> 
          <GradientStop Color="#FF2E2E2E" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridTop"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF1F1F1F" Offset="1" /> 
          <GradientStop Color="#FF1F1F1F" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Stroke" TargetName="rGridBack"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF414141" Offset="1" /> 
          <GradientStop Color="#FF565656" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Shape.Fill" TargetName="rThickness"> 
        <Setter.Value> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF0C0C0C" Offset="1" /> 
          <GradientStop Color="#FF0C0C0C" Offset="0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Button.Template> 

的按钮基于Adobe CS5套件上的对话形式,因为很多的代码。

+0

这个问题还不清楚,你ta把它当作C代码,但这不是C代码。事实上,我不知道它是什么。此外,你不解释你想如何设置“按钮内容”。你是否试图用C代码做到这一点?在那种情况下,你有什么尝试?否则,只需在文本编辑器中编辑该文件(不管它是什么)来更改“按钮内容”。请多说明一下。 – Nocturno

+0

@Nocturno它是WPF用户控件的Xaml,我假设他的意思是C#,并且他想要将UserControls内容绑定到标签内容 –

+0

这就是为什么你会拒绝投票的原因。我会将其更改为C#。原始问题中的更多信息将有所帮助。 – Nocturno

回答

1

您需要设置用户控件的DataContext到的RelativeSource =(的RelativeSource自}

<Button x:Class="WpfApplication1.UserControl1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" DataContext="{Binding RelativeSource={RelativeSource Self}}" 
     d:DesignHeight="35" d:DesignWidth="273" Content="Button"> 

然后,你需要更改标签的绑定到:

<Label FontWeight="Normal" Content="{Binding Path=Content}" Foreground="White" HorizontalContentAlignment="Center" Name="tblckStep1Desc" Padding="0" VerticalContentAlignment="Center"> 
    <Label.Effect> 
     <DropShadowEffect BlurRadius="2" Color="Black" Direction="330" Opacity="0.7" ShadowDepth="1.5" /> 
    </Label.Effect> 
</Label> 

这会给出一个结果,看起来像:

enter image description here

+0

谢谢,我对C#和WPF有很少经验,但是使用这个按钮设计(每个都有触发器,网格内容和更多)的表单中有很多代码,这将帮助我节省代码。 – FukYouAll

+0

@SteelersMan不客气 –

相关问题