- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
UserControl 有 3 个依赖属性:FormatAvailabilities、Orientation 和 FullText。 FormatAvailabilities 绑定(bind)到 ItemsControl 的 ItemsSource 属性。如果 StackPanel 位于 ItemsControl 中的 ItemsPanelTemplate 中,则 Orientation 绑定(bind)到 Orientation 属性。 FullText 绑定(bind)到 ItemsControl 的 DataTemplate 内两个 TextBlock 的 Visibility 属性。我使用两个转换器来确定要显示哪个 TextBlock:BoolToVisibilityConverter 和 BoolToInvertedVisibilityConverter(后者是前者的反转)。我将 Visibility 属性按原样从 TextBlock(它们都是独立的)复制到 ItemsControl 并且它工作正常..
似乎 TextBlock 上的绑定(bind)无法正常工作,因为两者始终可见。由于它们都绑定(bind)到同一属性,但其中一个是倒置的,因此两者永远不可能同时可见。
我在我的转换器中放置了一个断点,但它从未被击中,所以我的猜测是从重复控件内部绑定(bind)到它所在的外部控件存在问题。
应用程序.xaml:
<common:BaseApp x:Class="xyz.App" xmlns:converters="clr-namespace:xyz.Converters;assembly=xyz">
<common:BaseApp.RootVisual>
<phone:PhoneApplicationFrame x:Name="RootFrame" Source="/Home.xaml"/>
</common:BaseApp.RootVisual>
<common:BaseApp.Resources>
<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
<converters:BoolToVisibilityConverter x:Key="BoolToInvertedVisibilityConverter" IfTrue="Collapsed" IfFalse="Visible"/>
</common:BaseApp.Resources>
</common:BaseApp>
用户控件 XAML:
<UserControl
x:Name="FormatsControl"
x:Class="xyz.Formats"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480">
<ItemsControl Background="Transparent" ItemsSource="{Binding ElementName=FormatsControl, Path=FormatAvailabilities}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="{Binding ElementName=FormatsControl, Path=Orientation}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding BindsDirectlyToSource=True}" Margin="0,0,10,0" Visibility="{Binding ElementName=FormatsControl, Path=FullText, Converter={StaticResource BoolToVisibilityConverter}}"/>
<TextBlock Text="{Binding Description}" Margin="0,0,10,0" Visibility="{Binding ElementName=FormatsControl, Path=FullText, Converter={StaticResource BoolToInvertedVisibilityConverter}}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>
用户控件CS:
namespace xyz
{
public partial class Formats : UserControl
{
public static readonly DependencyProperty FormatAvailabilitiesDependencyProperty = DependencyProperty.Register("FormatAvailabilities", typeof(FormatAvailability[]), typeof(Formats), null);
public static readonly DependencyProperty OrientationDependencyProperty = DependencyProperty.Register("Orientation", typeof(Orientation), typeof(Formats), new PropertyMetadata(Orientation.Horizontal));
public static readonly DependencyProperty FullTextDependencyProperty = DependencyProperty.Register("FullText", typeof(bool), typeof(Formats), null);
public FormatAvailability[] FormatAvailabilities
{
get { return (FormatAvailability[])base.GetValue(Formats.FormatAvailabilitiesDependencyProperty); }
set { base.SetValue(Formats.FormatAvailabilitiesDependencyProperty, value); }
}
public Orientation Orientation
{
get { return (Orientation)base.GetValue(Formats.OrientationDependencyProperty); }
set { base.SetValue(Formats.OrientationDependencyProperty, value); }
}
public bool FullText
{
get { return (bool)base.GetValue(Formats.FullTextDependencyProperty); }
set { base.SetValue(Formats.FullTextDependencyProperty, value); }
}
public Formats()
{
InitializeComponent();
}
}
}
我一定是在看东西...谢谢!
最佳答案
如本 blog post 所述,在 Silverlight 3 中命名 UserControl 存在问题,它也存在于 Windows Phone 7 版本的 Silverlight 中。实际上,如果您在使用它的 XAML 中为 UserControl 指定一个名称(即它的父级),那么它将覆盖在 UserControl 自己的 XAML 文件中给定的名称。
关于c# - 将 ItemsControl ItemTemplate 中的属性绑定(bind)到 UserControl 上的 DP 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370872/
我有一个带有许多ItemTemplates的ListView。每个ItemTemplate中有一个Repeater,显示每个ItemTemplate中的文件列表(即类别)。目前,所有类别中的所有文件都
我有一个“报告”页面,该页面将根据表格中的事件报告数量显示动态数量的按钮(格式为 ASP:Hyperlinks)。除了我想要的显示,我可以让一切正常工作。我想并排查看我的按钮(左边是“ItemTemp
我有一个 UserControl我用来显示 UIElement 的列表s。该控件由单个 ItemsControl它是 ItemPanelTemplate切换为水平 StackPanel , 它的 It
我在 ListBox 中使用 ComboBox 作为 ItemTemplate。我的 ComboBox 是可编辑的。当用户在组合框中使用鼠标滚轮时,它会更改当前值。我不想要那个。我想让 ListBox
我有服务器控件,例如在另一个 gridview 的模板字段中带有 gridview 的弹出窗口:
我有一个显示 2 个列表的窗口,它们应该使用相同的模板,所以我考虑将模板放入我的窗口中的资源中,如下所示:
我确信这很简单,但我似乎无法弄清楚如何去做。基本上我有一个来自 azure 移动服务数据库的客户列表。到目前为止一切正常,但我想根据数据为列表框中的每个项目设置项目模板。我有 2 个模板,一个用于公司
我有一个用户控件,它为该控件定义了一个 ItemsControl 和一个 ItemTemplate,即,
我正在处理icons.XAML 图像,将它们插入到文本块上方的按钮中。一切看起来都很棒,直到我将鼠标悬停在图像本身上。一个灰色框只出现在图片上: 如何摆脱灰盒? 这是其中一个图标: 这是
我正在创建一个带有绑定(bind)到项目名称的列表框的 WPF 应用程序。作为装饰元素,我想在列表中的每个项目旁边放置一个小图标,类似于 Outlook 在其个人文件夹列表中所做的方式。对于初学者,我
当 PivotItem 声明为: Text 但是我在使用绑定(bind)的时候如何设置Margin:
我有一个使用 MVVM 的 WPF 应用程序。 此代码来 self 的 ResourceDictionary.xaml
我试图显示一个 ComboBox,其 ItemsSource 是控件的集合(它是 PropertyGrid 的一部分,ComboBox 应该显示控件的名称,并且用户应该能够选择其中一个控件)。这是该问
我希望这个 Ellipse 从其对应的 BallViewModel 中获取其坐标,并使用它们来确定其在 Canvas 内的位置。 球列表绑定(bind)List在 mainviewmodel 中,因此
我有一个带有ItemTemplate的以下ListBox
我有一个 ListView与 ItemTemplate .对于我 ItemSource 中的每个项目,我想遍历项目中的一个属性并在我的 ViewCell 中创建一个部分. 所以每一项都是 Downlo
我有一个 ListBox 控件的情况。在项目模板内有一个按钮。当我单击按钮时,我想将所述 ListBox 的所选项目更改为按钮所在的项目。目前,我可以通过单击项目模板中的其他位置来更改所选项目,但如果
我为 ListViewItem 创建了一个模板。 它并没有填满所有的空间。 我的模板如下:
我为 ListViewItem 创建了一个模板。 它并没有填满所有的空间。 我的模板如下:
我有一个 MenuItem 类型的 WPF 控件模板:
我是一名优秀的程序员,十分优秀!