Tag: xaml

将枚举值作为来自XAML的命令parameter passing

我想要传递一个枚举值作为WPF中的命令参数,使用这样的东西: <Button x:Name="uxSearchButton" Command="{Binding Path=SearchMembersCommand}" CommandParameter="SearchPageType.First" Content="Search"> </Button> SearchPageType是一个枚举,这是知道从哪个buttonsearch命令被调用。 这是可能的WPF中,或者你怎么能传递一个枚举值作为命令参数?

简单(我认为)WPF中的水平线?

创build一个相对简单的数据input表单,只是想用横线(与HTML中的HR标签不同)来分隔某些部分,这些部分拉伸了表单的整个长度。 我试过这个: <Line Stretch="Fill" Stroke="Black" X2="1"/> 由于父控件不是固定的宽度,因此此行使窗口延伸至屏幕的整个宽度。 有没有一种简单的方法来做到这一点,而不是固定我父母的控制/窗口的宽度?

ResourceDictionary在一个单独的程序集中

我有资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等),我想在多个单独的应用程序中使用。 我可以将它们添加到应用程序的程序集中,但是如果我在一个程序集中编译这些资源,并让我的应用程序引用它,那会更好吗? 在构build资源组件之后,如何在我的应用程序的App.xaml中引用它? 目前我使用ResourceDictionary.MergedDictionaries合并单个字典文件。 如果我在一个程序集中有他们,我怎么能在xaml中引用它们?

string属性中的换行符

当它被设置为一个属性时,如何添加一个换行符到文本,即: <TextBlock Text="Stuff on line1 \n Stuff on line2" /> 分解成爆炸格式不是我的特殊情况的一种select。 我需要的是一些方法来模拟以下内容: <TextBlock> <TextBlock.Text> Stuff on line1 <LineBreak/> Stuff on line2 </TextBlock.Text> <TextBlock/>

WPF文本框validationC#

我有3个文本框( Id1 , Name和Salary )。 Id和Salary应该包含整数, Name只能包含字符。 我需要validation我的文本框,它应该显示错误,因为我input错误的字符或整数。 也可以这样做只有在Xaml没有代码隐藏? 我是新来的Wpf和validation请帮我所需的代码 这是Xaml代码: <TextBox Name="tb1" HorizontalAlignment="Left" Height="20" Margin="60,10,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Id,ElementName=dgsample}" VerticalAlignment="Top" Width="100" /> <TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Name, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/> <TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Salary, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/>

如何使用NAMED内容创buildWPF UserControl

我有一组控件,附带的命令和逻辑不断以相同的方式重用。 我决定创build一个拥有所有通用控件和逻辑的用户控件。 不过,我也需要控制能够保存可以命名的内容。 我尝试了以下内容: <UserControl.ContentTemplate> <DataTemplate> <Button>a reused button</Button> <ContentPresenter Content="{TemplateBinding Content}"/> <Button>a reused button</Button> </DataTemplate> </UserControl.ContentTemplate> 不过,似乎放在用户控件内的任何内容都不能被命名。 例如,如果我使用以下方式的控制: <lib:UserControl1> <Button Name="buttonName">content</Button> </lib:UserControl1> 我收到以下错误: 无法在元素“button”上设置名称属性值“buttonName”。 “button”在元素“UserControl1”的范围内,当在另一个范围中定义时,它已经有了一个名字注册。 如果我删除buttonName,然后编译,但是我需要能够命名的内容。 我怎样才能做到这一点?

DataTrigger的值不为空?

我知道我可以创build一个setter来检查一个值是否为NULL,并执行一些操作。 例: <TextBlock> <TextBlock.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding SomeField}" Value="{x:Null}"> <Setter Property="TextBlock.Text" Value="It's NULL Baby!" /> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> 但是,我怎么能检查一个“不”的价值…如“非空”或“不= 3”? 在XAML中可能吗? 结果:谢谢你的回答…我知道我可以做一个值转换器(这意味着我将不得不在代码中,这不会是我所希望的纯XAML)。 但是,这确实回答了有效的“否”你不能在纯XAML中做的问题。 然而,select的答案显示了创build这种function的最好方法。 很好找。

从DataTemplate访问父级DataContext

我有一个ListBox绑定到一个ViewModel的子集合。 列表框项目根据父ViewModel上的属性在数据模板中进行样式设置: <Style x:Key="curveSpeedNonConstantParameterCell"> <Style.Triggers> <DataTrigger Binding="{Binding Path=DataContext.CurveSpeedMustBeSpecified, ElementName=someParentElementWithReferenceToRootDataContext}" Value="True"> <Setter Property="Control.Visibility" Value="Hidden"></Setter> </DataTrigger> </Style.Triggers> </Style> 我得到以下输出错误: System.Windows.Data Error: 39 : BindingExpression path error: 'CurveSpeedMustBeSpecified' property not found on 'object' ''BindingListCollectionView' (HashCode=20467555)'. BindingExpression:Path=DataContext.CurveSpeedMustBeSpecified; DataItem='Grid' (Name='nonConstantCurveParametersGrid'); target element is 'TextBox' (Name=''); target property is 'NoTarget' (type 'Object') 因此,如果我将绑定expression式更改为"Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"它将起作用,但只要父级用户控件的datacontext是BindingListCollectionView 。 这是不可接受的,因为用户控件的其余部分会自动绑定到BindingList上的CurrentItem属性。 如何在样式中指定绑定expression式,以便它可以工作,而不pipe父数据上下文是集合视图还是单个项目?

WPF TreeView:如何使用类似于资源pipe理器中的圆angular来select项目的样式

在WPF TreeView中选定的项目有一个深蓝色的背景与“尖锐”的angular落。 今天看起来有点过时了: 我想改变背景看起来像在Windows 7的资源pipe理器(有/无焦点): 我到目前为止所尝试的并不是去掉原来的深蓝色背景,而是在它的顶部绘制了一个圆形边框,以便在边缘和左侧看到深蓝色 – 很难看。 有趣的是,当我的版本没有重点,它看起来很不错: 我想避免重新定义这里或这里 显示的控制模板。 我想设置所需的最小属性,使选定的项目在资源pipe理器中看起来像。 另一种select:我也很高兴有焦点的选定的项目看起来像我现在没有焦点。 当失去焦点时,颜色应该从蓝色变为灰色。 这是我的代码: <TreeView x:Name="TreeView" ItemsSource="{Binding TopLevelNodes}" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="BorderBrush" Value="#FF7DA2CE" /> <Setter Property="Background" Value="#FFCCE2FC" /> </Trigger> </Style.Triggers> </Style> </TreeView.ItemContainerStyle> <TreeView.Resources> <HierarchicalDataTemplate […]

如何让StackPanel的孩子向下填充最大空间?

我只是想在左边stream动文字,右边是帮助框。 帮助框应该一直延伸到底部。 如果你拿出下面的外面的StackPanel它很好。 但由于布局的原因(我插入UserControlsdynamic),我需要包装StackPanel。 我如何让GroupBox向下延伸到StackPanel的底部,如你所见我已经尝试过了: VerticalAlignment = “弹力” VerticalContentAlignment = “弹力” 身高=“自动” XAML: <Window x:Class="TestDynamic033.Test3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Test3" Height="300" Width="600"> <StackPanel VerticalAlignment="Stretch" Height="Auto"> <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Margin="10"> <GroupBox DockPanel.Dock="Right" Header="Help" Width="100" Background="Beige" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Height="Auto"> <TextBlock Text="This is the help that is available on the news screen." TextWrapping="Wrap" /> </GroupBox> <StackPanel DockPanel.Dock="Left" Margin="10" Width="Auto" […]