I have a custom control that i need to inherit from GridView. And standard way, that works for UserControl,
<UserControl.Resources>
<local:NodeToImageConverter x:Key="imageConverter" />
<local:ImageHeightConverter x:Key="imageHeightConverter" />
</UserControl.Resources>
it does not work for me. I really would like to use local resources - not to put them higher. I tried to make one level class and declare a dependency property for resourses there. But it did not work:
public partial class CustomDetailsView2 : GridViewRes {
public CustomDetailsView2() {
InitializeComponent();
} // it is interesting that if i set a breakpoint here i see my resourses - 2 items
}
public class GridViewRes : GridView {
public static DependencyProperty ResourcesProperty = DependencyProperty.Register(
"Resources",
typeof(ResourceDictionary),
typeof(CustomDetailsView2),
new FrameworkPropertyMetadata() {
DefaultValue = new ResourceDictionary()
});
public ResourceDictionary Resources {
get { return (ResourceDictionary)GetValue(ResourcesProperty); }
set { SetValue(ResourcesProperty, value); }
}
}
This is xaml
<local:GridViewRes x:Class="Nexplorer.UIParts.CustomDetailsView2"
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"
xmlns:local="clr-namespace:Nexplorer.UIParts"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<local:GridViewRes.Resources>
<local:NodeToImageConverter x:Key="imageConverter" />
<local:ImageHeightConverter x:Key="imageHeightConverter" />
</local:GridViewRes.Resources>
i tried also attached property - with no success
<local:CustomProperties.Resources>
<local:NodeToImageConverter x:Key="imageConverter" />
<local:ImageHeightConverter x:Key="imageHeightConverter" />
</local:CustomProperties.Resources>
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Stretch="Fill" HorizontalAlignment="Left">
<Image.Source>
<MultiBinding Converter="{StaticResource imageConverter}"> here i have a runtime "imageConverter resourse not found" exception...
<Binding Path="IconSize" ElementName="thisControl"/>
<Binding />
</MultiBinding>
</Image.Source>
</Image>
<TextBlock Grid.Column="1" Text="{Binding Path=DisplayName}" VerticalAlignment="Center" Margin="2 1 0 1"/>
<Grid.Height>
<Binding Path="IconSize" Converter="{StaticResource imageHeightConverter}" ElementName="thisControl" />
</Grid.Height>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Size">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DisplaySize}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Modified">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DisplayModifiedDateTime}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</local:GridViewRes>
how can i declare resourses in the this xaml?