1

WPF colorpicker의 컨트롤 템플릿을 사각형으로 설정하려고합니다. ColorPicker ComboBox 대신 사각형 모양 만 표시됩니다. 그러나 ControlTemplate에 컨트롤을 배치하면 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 오류가 발생합니다.WPF ColorPicker의 컨트롤 템플릿 설정

이 내 WPF 코드입니다 : 내가 잘못 뭐하는 거지의

<wpfx:ColorPicker Name="ColorPicker1" Height="30" DisplayColorAndName="False" 
        Margin="29,72,366,209" 
        SelectedColorChanged="ColorPicker1_SelectedColorChanged"> 
    <wpfx:ColorPicker.Template> 
     <ControlTemplate> 
      <Rectangle ></Rectangle> 
     </ControlTemplate> 
    </wpfx:ColorPicker.Template> 
</wpfx:ColorPicker> 

어떤 제안?

+0

오전 사용하고있는 추정 : http://wpftoolkit.codeplex.com/ .... 당신이 닫는 태그를 놓친 건가 여기

은 ColorPicker 구성 기본 템플릿입니까?

+0

아니요. 죄송합니다. 붙여 넣은 코드를 복사하여 실제 코드에서 놓치지 마십시오. – Irfan

+0

예외의 스택 추적을 게시 해 주시겠습니까? –

답변

5

가장 가능성있는 이유는 ColorPicker 컨트롤이 템플릿 내 일부 요소를 필요로한다는 것입니다. 일반적으로 이러한 요소는 "PART _..."에서 시작하는 특별한 이름을 갖습니다. 내가 놓친 요소에 대해 더 많은 정보를 얻으려면 기본 색상 선택기 템플릿을 살펴보고 거기에있는 요소와 이름이 무엇인지 찾아야한다고 생각합니다.

가능한 수정 시나리오 : ColorPicker 컨트롤에 필수 인 컨트롤의 이름을 찾고이 이름을 사각형에 지정하십시오.

 <ControlTemplate TargetType="{x:Type local:ColorPicker}"> 
      <Grid> 
       <ToggleButton x:Name="PART_ColorPickerToggleButton" 
          IsTabStop="True" 
          MinHeight="22" 
          Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" 
          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Padding="{TemplateBinding Padding}" 
          IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" 
          IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" 
          Style="{TemplateBinding ButtonStyle}"> 
       <Grid Margin="2"> 
        <Border x:Name="ColorOnly" Style="{StaticResource ColorDisplayStyle}" /> 

        <Border x:Name="ColorAndName" Background="White" Visibility="Hidden"> 
         <StackPanel Orientation="Horizontal"> 
          <Border HorizontalAlignment="Left" Width="20" Margin="2,1,4,1" Style="{StaticResource ColorDisplayStyle}" BorderThickness="1" BorderBrush="#FFC9CACA" /> 
          <TextBlock Text="{Binding SelectedColorText, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" /> 
         </StackPanel> 
        </Border> 
       </Grid> 
       </ToggleButton> 

       <Popup x:Name="PART_ColorPickerPalettePopup" VerticalAlignment="Bottom" IsOpen="{Binding ElementName=PART_ColorPickerToggleButton, Path=IsChecked}" StaysOpen="False" AllowsTransparency="True" Focusable="False" HorizontalOffset="1" VerticalOffset="1" PopupAnimation="Slide"> 
       <Border BorderThickness="1" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" Padding="3"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition /> 
          <RowDefinition Height="Auto" /> 
         </Grid.RowDefinitions> 

         <Grid x:Name="_gridStandardColorsHost" Margin="4"> 
          <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
          </Grid.RowDefinitions> 

          <!-- Available Colors --> 
          <Grid Grid.Row="1" Visibility="{TemplateBinding ShowAvailableColors, Converter={StaticResource BooleanToVisibilityConverter}}"> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition /> 
           </Grid.RowDefinitions> 
           <TextBlock Text="{TemplateBinding AvailableColorsHeader}" Background="AliceBlue" Padding="2" Margin="0,0,0,1" /> 
           <ListBox x:Name="PART_AvailableColors" 
             Grid.Row="1" 
             ItemsSource="{Binding AvailableColors, RelativeSource={RelativeSource TemplatedParent}}" 
             Style="{StaticResource ColorListStyle}" /> 
          </Grid> 
          </Grid> 

          <!-- Standard Colors--> 
          <Grid Grid.Row="2" Visibility="{TemplateBinding ShowStandardColors, Converter={StaticResource BooleanToVisibilityConverter}}"> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition Height="Auto" /> 
           </Grid.RowDefinitions> 
           <TextBlock Text="{TemplateBinding StandardColorsHeader}" Background="AliceBlue" Padding="2" Margin="0,1,0,1" /> 
           <ListBox x:Name="PART_StandardColors" 
             Grid.Row="1" 
             ItemsSource="{Binding StandardColors, RelativeSource={RelativeSource TemplatedParent}}"              
             Style="{StaticResource ColorListStyle}" /> 
          </Grid> 
          </Grid> 

          <!-- Recent Colors--> 
          <Grid Grid.Row="3" Margin="0,1,0,1" Visibility="{TemplateBinding ShowRecentColors, Converter={StaticResource BooleanToVisibilityConverter}}"> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition Height="Auto" /> 
           </Grid.RowDefinitions> 
           <TextBlock Text="{TemplateBinding RecentColorsHeader}" Background="AliceBlue" Padding="2" Margin="0,1,0,1" /> 
           <ListBox x:Name="PART_RecentColors" 
             Grid.Row="1" 
             ItemsSource="{Binding RecentColors, RelativeSource={RelativeSource TemplatedParent}}" 
             Style="{StaticResource ColorListStyle}" /> 
          </Grid> 
          </Grid> 
         </Grid> 

         <!-- ColorCanvas --> 
         <Grid x:Name="_colorCanvasHost" Visibility="Collapsed"> 
          <local:ColorCanvas x:Name="PART_ColorCanvas" 
              Background="Transparent" 
              BorderThickness="0" 
              SelectedColor="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}" /> 
         </Grid> 

         <Separator Grid.Row="1" HorizontalAlignment="Stretch" Margin="5,0,5,0" /> 

         <!-- More Colors Button --> 
         <ToggleButton x:Name="_colorMode" Grid.Row="2" Content="Advanced" Margin="5" Visibility="{TemplateBinding ShowAdvancedButton, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
        </Grid> 
       </Border> 
       </Popup> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="DisplayColorAndName" Value="True"> 
       <Setter TargetName="ColorOnly" Property="Visibility" Value="Collapsed" /> 
       <Setter TargetName="ColorAndName" Property="Visibility" Value="Visible" /> 
       </Trigger> 
       <Trigger SourceName="_colorMode" Property="IsChecked" Value="True"> 
       <Setter TargetName="_colorMode" Property="Content" Value="Standard" /> 
       <Setter TargetName="_colorCanvasHost" Property="Visibility" Value="Visible" /> 
       <Setter TargetName="_gridStandardColorsHost" Property="Visibility" Value="Collapsed" /> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
관련 문제