2012-12-06 69 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不客氣 –

相關問題