2013-10-09 89 views
0

我在窗口上有2個按鈕。我正在應用這種風格。但得到了這個例外。在wpf中的按鈕上應用樣式時出現異常

'Set property'System.Windows.FrameworkElement.Style'throw a exception。'行號「38」和行位置「7」。

我的代碼。

<Window.Resources> 
     <Image x:Key="btnconnect" Source="images/img-1.png" /> 
     <Image x:Key="btnshow" Source="images/img-2.png" /> 
     <Image x:Key="btnclick" Source="images/img-2clicked.png"/> 
     <Style x:Key="buttonconnect" TargetType="Button"> 
      <Setter Property="Content" Value="{StaticResource btnconnect}"> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid x:Name="grid"> 
          <Border x:Name="border" CornerRadius="8" BorderThickness="2"> 
           <ContentPresenter HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          TextElement.FontWeight="Bold"></ContentPresenter> 
          </Border> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter Value="{StaticResource btnclick}" /> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="False"> 
           <Setter Property="Opacity" TargetName="grid" Value="0.25"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <Style x:Key="buttonshow" TargetType="{x:Type Button}"> 
      <Setter Property="Content" Value="{StaticResource btnshow}" /> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <Button Margin="50 100 50 100" Style="{StaticResource buttonconnect}" Height="50" Width="120"/> 
     <Button Margin="50 110 50 10" Style="{StaticResource buttonshow}" Height="50" Width="120"/> 
    </Grid> 

回答

1
<Setter Value="{StaticResource btnclick}" /> 

我想你忘了指定在其上的setter應用屬性。

雖然我不確定它會導致運行時錯誤。

基本上你應該做的(理想情況下發布之前)是儘量刪除儘可能多的代碼,同時仍然能夠重現你的問題,只有然後發佈你的問題與簡化的代碼,如果你仍然沒有線索在哪裏錯誤來自於。

+0

好的,先生。你的回答是對的。告訴我一件事。這次我使用單個網格。如果我有一個嵌套網格或另一個孩子在網格內。在這種情況下,我如何訪問它。目前<網格X:名稱= 「網格」> <邊界X:名稱= 「邊界」 CornerRadius = 「8」 了borderThickness = 「2」>

+0

先生,如果我的回答是對的,請將其標記爲'答覆'。如果您有任何其他問題,請創建另一個問題(在您嘗試並完成一些研究之後:令人驚訝的是,您可以通過從Panel繼承的Grid.Children屬性訪問Grid的子節點) – franssu

+0

好的,謝謝你的幫助。 –