2016-07-12 9 views
0

In this answerx:Name 속성을 생략하면 스타일이 자동으로 모든 곳에 적용됩니다 (정확하게는 보이는 것처럼 보입니다).자동으로 적용되지 않는 스타일은 어떻게 만들 수 있습니까?

각 스타일에 식별자를 지정하지 않으면 해당 스타일이 지정한 TargetType과 일치하는 모든 컨트롤에 적용됩니다. 버튼을 다르게 보이게하려면 위와 동일하게 할 수 있지만 각기 다른 버튼에서 사용할 스타일에 대한 식별자를 포함시켜야합니다. [...]

그러나 내가 추가 할 때 x:Name 신원 확인 프로그램의 경우 이 아니고이 자동으로 적용되어야하나요?

나는이 때 때문에 내 app.xaml에 이런 식으로 연결되어 내 ResourceDictionary에서

<Style TargetType="{x:Type TextBlock}" x:Name="RunningTextStyle"> 
    <Setter Property="FontSize" Value="15" /> 
</Style> 

을 :

<Application.Resources> 
    <ResourceDictionary Source="ApplicationStyles.xaml" /> 
</Application.Resources> 

그것은 여전히 ​​자동으로 모든 TextBlock의 적용 않습니다.

표시기에 표시기와 함께 사용해야하는 스타일은 어떻게 만듭니 까?

내가 VS2015에서 ReSharper에서 사용하고 난 TextBlock 수동 방식에 스타일을 추가하려고 할 때 x:Key 이름도 표시되지 않습니다 : Style="{StaticResource ...}" 정의를 가능성으로 (나는 그것을 한 번이 방법이 있고 그것은했다 그것. 작동하지만, 일반적으로 R # 또는 VS에 의해 광고되고 있습니다).

흥미롭게도, 나는 단지 Button 스타일이 자동으로 적용되지 않는 다른 방법보다 몇 시간 앞섰다.

답변

3

스타일에 x:Key="MyArbitraryStyleKey" 속성을 지정하십시오. 그것은 ResourceDictionary에 있으며, 사전에있는 것의 "이름"(비 유적으로 말해서 말하자면)은 키라고 불리며, 실제로는 모양을 볼 때 의미가 있습니다. 그리고 기능적으로 XAML에서 x:Namex:Key은 매우 다른 방식으로 다른 작업을 수행하기 위해 서로 다른 코드를 호출합니다. 의미 차이가 처음에는 약간 퍼지기는하지만.

<Style TargetType="{x:Type TextBlock}" x:Key="RunningTextStyle"> 
    <Setter Property="FontSize" Value="15" /> 
</Style> 

... 

<TextBlock 
    Style="{StaticResource RunningTextStyle}" 
    Text="I tried Resharper once. Sent them back their demo, tied to a brick." 
    /> 

ReSharper에서 그것을 좋아하지 않는 경우, (헤이, 잘 그것을 좋아 ReSharper에서 밝혀! - 나는 다시 내가 말한 모든 것을 가지고) 그들에게 버그 리포트를 보내

+1

오 ... 그것은 x : Key가 아니라 x : Name입니다. 기분이 ... 바보 같아. 이것에 너무 많은 시간을 낭비했습니다. 고맙습니다! 그것은 resharper 전혀 아니 었어. – Mafii

+0

예, Resharper가 내 등을 맞았습니다. :) 다시 나타납니다! – Mafii

+2

@Mafii 네, 정규 XAML의 경우'x : Name '이고, ResourceDictionary의 경우'x : Key'입니다. 일단 암기하면 이해가가는 것 같아요. –

3

그냥 x:Key="RunningTextStyle"x:Name="RunningTextStyle"

의 insted 사용
+1

에드의 답변이 더 정확하고 2 분 빠르기 때문에 대답을 수락했습니다. 당신은 대답이 정확합니다 (그리고 더 직설적입니다!), 도와 줘서 고마워. – Mafii