让我告诉你我的XAML代码的一部分:
<ListBox Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.IsDeferredScrollingEnabled="True"
HorizontalAlignment="Stretch" ItemsSource="{Binding}" Margin="1,1,0,0"
Name="listBox_Faits" Width="290" VerticalAlignment="Stretch"
SelectionChanged="listBox_Faits_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="SlateGray" BorderThickness="0.5" Margin="1,2,1,1"
Width="{Binding ElementName=listBox_Faits, Path=Width}">
Run Code Online (Sandbox Code Playgroud)
如果创建了太多边框(它与ObservableCollection链接),则会出现垂直滚动条,并且我的边框不会自行调整大小.(我希望看到完整的边框,我不希望它在最后被切割)
如果有人有想法,谢谢!如果您需要更多信息,请随时询问!
RGDS,
弗洛
我试图第一次使用MVVM模式.所以我ItemsControl填充了我的viewmodel对象,使用DataTemplate's 显示; 对象是"节点"和"边缘",DataTemplate用Thumb和Polyline对象表示,我希望能够检测到点击和拖动ItemsControl,以便移动节点和边缘.
两个问题:
Polyline's和Thumb?(我可以将一个Thumb.DragDelta处理程序附加到ItemsControl并e.OriginalSource指向Thumb,但是如何获取相应的viewmodel对象?)ItemsControl到检测鼠标单击和拖动空白区域?(答案如下)注意:我知道如果它直接处理View的事件,它可能不被认为是正确的ViewModel.但重要的是,我需要处理鼠标事件,我不知道如何附加它们.
我试图在我的资源字典中获取特定模板.这是我的资源字典
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:view="clr-namespace:Test.Layout.View"
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><DataTemplate x:Key="LeftRightLayout">
<toolkit:DockPanel>
<view:SharedContainerView toolkit:DockPanel.Dock="Left"/>
<view:SingleContainerView toolkit:DockPanel.Dock="Right"/>
</toolkit:DockPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
但是当它到达XamlReader.Load时
private static ResourceDictionary GetResource(string resourceName)
{
ResourceDictionary resource = null;
XDocument xDoc = XDocument.Load(resourceName);
resource = (ResourceDictionary)XamlReader.Load(xDoc.ToString(SaveOptions.None));
return resource;
}
Run Code Online (Sandbox Code Playgroud)
找不到"SharedContainerView"类型,因为"clr-namespace:Test.Layout.View"是一个未知的命名空间.[线:4位置:56]
xaml datatemplate resourcedictionary xamlreader silverlight-4.0
是否可以在数据模板中显式使用CollectionViewSource?通常我们将CollectionViewSource放在模板旁边的资源中,但我们的模型不允许这样做,因为collectionviewsource的'source'是树中此级别的DataContext的属性,这意味着需要有一个实例在这个水平.把它放在资源的根部就意味着只有一个实例.我们也不能简单地在外层使用分组,因为这些项目不存在,直到您在层次结构中这么远,并且并非所有兄弟都拥有此属性.因此,逻辑上我们在DataTemplate中实例化CollectionViewSource(在这个例子中是HierarchicalDataTemplate,但这是无关紧要的.)
具体来说,我们尝试在此特定节点级别允许特定排序.我们唯一的另一种选择是在ViewModel本身进行排序,但由于我们使用的ObservableCollections本身不支持排序,因此会变得很痛苦.实际上,我们在这个主题上看到的每篇文章都说明你应该正是因为这个原因使用CollectionViewSource,因此这个问题.
例如,这有效......
<HierarchicalDataTemplate x:Key="CategoryTemplate"
ItemTemplate="{StaticResource TreeViewSymbolTemplate}"
ItemsSource="{Binding Symbols}">
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
但这不......
<HierarchicalDataTemplate x:Key="CategoryTemplate"
ItemTemplate="{StaticResource TreeViewSymbolTemplate}">
<HierarchicalDataTemplate.ItemsSource>
<Binding>
<Binding.Source>
<CollectionViewSource Source="{Binding Symbols}" />
</Binding.Source>
</Binding>
</HierarchicalDataTemplate.ItemsSource>
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
在我看来它会像它一样,但事实并非如此.同样,我们不能将CollectionViewSource放在与数据模板相同的级别,因为每个模板需要一个实例,因为每个模板都有自己的一组项目(尽管它们都将共享排序条件.)
中号
data-binding wpf datatemplate observablecollection collectionviewsource
嘿所有,我正在尝试将动画应用到任何添加到WP7的silverlight子集中的datatemplate的元素.我有一些问题.虽然在使用DataTemplate.Triggers的WPF(Animate WPF Datatemplate,当项目添加到Listbox?)时似乎很有可能,但WP7的silverlight没有DataTemplates的Triggers属性.因此,我将如何在winphone上执行此操作?
silverlight listbox datatemplate windows-mobile windows-phone-7
我正在尝试在我的WPF项目中实现下面的代码,以便为具有动态列的DataGrid动态生成DataTemplates.我在这里找到了StackOverflow上的代码
public DataTemplate Create(Type type)
{
return (DataTemplate)XamlReader.Load(
@"<DataTemplate
xmlns=""http://schemas.microsoft.com/client/2007"">
<" + type.Name + @" Text=""{Binding " + ShowColumn + @"}""/>
</DataTemplate>"
);
}
Run Code Online (Sandbox Code Playgroud)
但是,在XamlReader.Load代码上,我收到错误"无法从'string'转换为'System.Xaml.XamlReader'.
我试图通过将代码更改为:
return (DataTemplate)XamlReader.Load(XmlReader.Create(
Run Code Online (Sandbox Code Playgroud)
但是我在字符串中传递无效字符时遇到错误.
另外,我不确定如何将TextBlock传递给此代码.我想我会创建一个TextBlock并将其作为Type参数传递,但我得到错误"无法从'System.Windows.Controls.TextBlock'转换为'System.Type'
任何帮助赞赏.
我有一个XML文件(见下文),可以在列表框中显示所有产品名称.我希望列表框中的每个条目都显示产品名称,后跟价格,而不仅仅是产品名称.
如何在XAML文件中执行datatemplate?谢谢.
简化的XML文件:
<Product>
<Name>Red Chair</Name>
<Price>29.5</Price>
</Product>
Run Code Online (Sandbox Code Playgroud)
简化的XAML文件:
<DockPanel>
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" >
</ListBox>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
在我的C#文件中,我使用LINQ从XML文件中收集产品并将var产品分配给listBox1.DataContext,它工作正常.现在我只想添加价格.谢谢.
我有我的GridView使用的图像(PNG)文件作为其DataTemplate的一部分.如果我尝试删除GridView中的特定对象行,我也会删除该行的相关图像文件.列表中的每个项目的图像都不同.
我正在使用此代码删除图像文件
StorageFile _file = await DataStore.GetFileAsync(filename);
await _file.DeleteAsync(StorageDeleteOption.Default);
Run Code Online (Sandbox Code Playgroud)
图像文件在GridView的DataTemplate下的GridView上呈现.所以在我的List中的每个对象模型中,我都有一个公共属性,它为我的DataTemplate返回一个ImageSource.
我正在从List中删除对象行并在GridView刷新新的List项之后立即调用我的删除过程.
即使列表不再包含对象(使用图像),如果我尝试删除文件,应用程序也会抛出Access is Denied异常.当应用程序运行时,如果我尝试手动删除该特定文件(通过文件浏览器),它也不允许我.
我尝试清除我的应用程序中的所有未使用的对象,甚至在删除图像之前将GridView的ItemSource设置为null并将List设置为null.仍有例外情况仍然存在.
提前致谢.
我正在尝试构建我的UWP应用程序,当前尝试使用DataTemplate与x:Bind在资源字典中时,我遇到了设计器异常.
我创建了一个资源字典"ItemTemplates.xaml",其中包含相应的代码隐藏(以确保x:Bind初始化).该文件只包含一个模板:
<DataTemplate x:Key="HomeViewCategoryListItemTemplate" x:DataType="models:Category">
<Button Background="#88333333" Height="110" VerticalContentAlignment="Top" Padding="10" HorizontalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock FontWeight="Light" HorizontalAlignment="Center" Text="{x:Bind Name}" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" />
<TextBlock Foreground="{ThemeResource ToolTipForegroundThemeBrush}" HorizontalAlignment="Center" Margin="0,10,0,0" Text="{x:Bind Description}" Grid.Row="1" TextAlignment="Center" TextWrapping="Wrap" />
</Grid>
</Button>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
然后我将这个资源字典添加到App.xaml,如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Resources/Core.xaml" />
<resources:ItemTemplates />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
现在项目无法使用,因为设计师抛出奇怪的异常,但是当我清理并重建项目并导航到HomeView.xaml页面时,设计器只显示默认的"ToString()"项(基本上列表视图只包含三次) ListView中的文本"Models.Categories"和ListView的ItemTemplate属性带有下划线并显示以下错误:
The resource "HomeViewCategoryListItemTemplate" could not be resolved.
Run Code Online (Sandbox Code Playgroud)
当我导航回App.xaml时,我看到另一个下划线(该<resources:ItemTemplates />行):
The property 'DataType' was not found in type 'DataTemplate'.
Run Code Online (Sandbox Code Playgroud)
这两个错误都是非敏感的,因为当我实际运行应用程序时,没有任何问题,一切都运行良好.到目前为止,我发现的唯一解决方法是以经典方式和"编译"方式包括ResourceDictionary两次:
<ResourceDictionary …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题.我在Xamarin Forms页面上定义了两个datatemplates.当按下按钮时,我想换一个用于另一个.我知道ListView我可以使用ItemTemplate和绑定到我DataTemplateSelector来更改列表中项目的视图.
但我只想通过DataTemplateSelector点击按钮或类似按钮来交换View/StackLayout/Frame之类的东西.但我找不到任何提供ItemTemplate列表的控件ListView.
是否有可以实现此目的的控件?
datatemplate ×10
wpf ×5
xaml ×4
c# ×2
silverlight ×2
xamlreader ×2
binding ×1
border ×1
data-binding ×1
designer ×1
events ×1
linq ×1
listbox ×1
mvvm ×1
resize ×1
storagefile ×1
uwp ×1
winrt-xaml ×1
xamarin ×1
xbind ×1
xml ×1