내 홈페이지에 범주 이름으로 SVG 로고를 삽입해야하며 각 범주의 로고가 있습니다. 그들은 app.xaml에 DataTemplates
으로 정의되어 있으며 ContentControl
의 ContentControl
에 DataTemplateSelector
의 올바른 로고 (템플릿 선택기가없는 로고 포함이 포함되어 있지만 dinamically 포함해야 함)가 포함되어 있습니다. 여기 DataControl의 바인딩 된 내용이 DataTemplateSelector에서 null입니다.
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="1,0,0,6" Name="CategoryName">
<Button AutomationProperties.Name="Group Title" Click="Category_Click" Style="{StaticResource TextPrimaryButtonStyle}">
<ContentControl Name="CategoryLogo" Content="{Binding Category.Name}" ContentTemplateSelector="{StaticResource LogoTemplateSelector}" IsHitTestVisible="True" Margin="3,-7,10,10"/>
</Button>
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
을 그리고 여기 내 DataTemplateSelector
:
public class LogoTemplateSelector : DataTemplateSelector
{
public string DefaultTemplateKey { get; set; }
protected override DataTemplate SelectTemplateCore(object item, Windows.UI.Xaml.DependencyObject container)
{
var category = item as String;
DataTemplate dt = null;
switch (category)
{
case "Category1": dt = FindTemplate(App.Current.Resources, "Logo1");
break;
case "Category2": dt = FindTemplate(App.Current.Resources, "Logo2");
break;
case "Category3": dt = FindTemplate(App.Current.Resources, "Logo3");
break;
case "Category4": dt = FindTemplate(App.Current.Resources, "Logo4");
break;
default: dt = FindTemplate(App.Current.Resources, "Logo1");
break;
}
return dt;
}
private static DataTemplate FindTemplate(object source, string key)
{
var fe = source as FrameworkElement;
object obj;
ResourceDictionary rd = fe != null ? fe.Resources : App.Current.Resources;
if (rd.TryGetValue(key, out obj))
{
DataTemplate dt = obj as DataTemplate;
if (dt != null)
{
return dt;
}
}
return null;
}
}
내 문제는 Content="{Binding Category.Name}"
가 object item
내가 얻을 있기 때문에 작동하지 않는다는 것입니다 내 DataTemplateSelector
에서 null입니다.
처음에는 동일한 바인딩으로 TextBlock
이 있었고 범주 이름이 올바르게 표시 되었기 때문에 제대로 작동한다고 가정합니다.
또한 ContentControl
의 스타일을 사용하여 바인딩을 시도했지만 아무 것도 변경하지 않았습니다.
내가 잘못 했습니까?
내 항목이 내 데이터가 전에 DataTemplateSelector
번이라고
if (category == null)
{
return null;
}
템플릿 선택에서 null의 경우 내가 확인했다 :
감사