所以我一直在四处搜寻,找不到如何做到这一点。 我正在创build一个使用MVVM的用户控件,并希望在“Loaded”事件上运行一个命令。 我意识到这需要一点点的代码,但我不能完全弄清楚需要什么。 该命令位于ViewModel中,它被设置为视图的datacontext,但我不确定如何路由这个,所以我可以从加载的事件后面的代码调用它。 基本上我想要的是这样的… private void UserControl_Loaded(object sender, RoutedEventArgs e) { //Call command from viewmodel } 环顾四周,我似乎无法find任何地方的语法。 我是否需要先绑定xaml中的命令才能引用它? 我注意到在用户控件中的命令绑定选项不会让你绑定的命令,因为你可以在像一个button的东西… <UserControl.CommandBindings> <CommandBinding Command="{Binding MyCommand}" /> <!– Throws compile error –> </UserControl.CommandBindings> 我确信有一个简单的方法来做到这一点,但我不能为我的生活弄清楚。
在重构一些代码的过程中,我遇到了几个这样的构build错误: 库项目文件不能指定ApplicationDefinition元素。 该项目文件包含无效的属性值。 这些错误如何解决?
我不喜欢使用XAML。 我更喜欢用C#编写所有代码,但是我认为我做错了。 在哪种情况下最好使用XAML,什么时候使用C#? 你有什么经验?
我深入XAML堆栈的元素绑定到订单。 订单date显示为例如“12/31/2008 12:00:00 AM”。 我希望它显示为例如“31.12.2008”。 我怎样才能做到这一点? 我已经看到其他的stackoverflow问题提到StringFormat,但他们使用multibinding的方式,我无法去工作。 这里是我想要的语法(这是伪代码),只需指定StringFormat,你需要它,这是可能的? <StackPanel> <ListView ItemsSource="{Binding Orders}"> <ListView.View> <GridView> <GridViewColumn Header="Order ID" DisplayMemberBinding="{Binding Path=OrderID}" StringFormat="{}{1:dd.MM.yyyy}"/> <GridViewColumn Header="Order Date" DisplayMemberBinding="{Binding Path=OrderDate}"/> </GridView> </ListView.View> </ListView> </StackPanel>
我正在使用WPF4.0 DataGrid。 当双击一个新行中的单元格时,一切正常, 除非我向该列添加了单元格样式。 例如,我有一个数字列,我希望数据右alignment,所以xaml看起来像这样 <DataGridTextColumn Binding="{Binding Path=ImpaId}" CellStyle="{StaticResource CellRightAlign}"> <DataGridTextColumn.Header> <TextBlock Style="{StaticResource DataGridHeader}">Impa</TextBlock> </DataGridTextColumn.Header> </DataGridTextColumn> 在共享资源中的样式只是: <Style x:Key="CellRightAlign"> <Setter Property="Control.HorizontalAlignment" Value="Right" /> </Style> 在一个新行上产生的可选区域在图像中显示为小的蓝色区域。这是用户击中的非常小的目标,并且这恰好是他们希望在新行上开始的最可能的列。 如果我删除CellStyle,该区域按要求工作,但当然我失去了正确的路线。 有谁知道如何实现这两个? 我试过的东西 将绑定的TargetNullValue设置为具有某种宽度的格式。 这对现有的行起作用,但对新行没有影响。 在列上设置MinWidth,这不会影响新行可选区域的宽度。 事情有效: 使用来自@AngelWPF答案的信息,我能够从使用CellStyle更改为使用ElementStyle,如下所示: <DataGridTextColumn Binding="{Binding Path=ImpaId}" CellStyle="{StaticResource CellRightAlign}"> 成为 <DataGridTextColumn Binding="{Binding Path=ImpaId}" ElementStyle="{StaticResource CellRightAlign}">
在我的XAML代码中,我想根据一个特定行中对象的值来设置每行的Background颜色。 我有一个z的ObservableCollection ,每个z都有一个叫State的属性。 我在我的DataGrid开始了这样的事情: <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="Background" Value="{Binding z.StateId, Converter={StaticResource StateIdToColorConverter}}"/> </Style> </DataGrid.RowStyle> 这是一个错误的方法,因为x不是我的ViewModel类中的一个属性。 在我的ViewModel类中,我有一个ObservableCollection<z>这是这个DataGrid的ItemsSource和一个types为z的SelectedItem 。 我可以将颜色绑定到SelectedItem ,但是这只会改变DataGrid一行。 我怎么能根据一个属性改变这行backgroundcolor?
是否有可能从资源文件中添加一些值到XAML标记? 或者对于本地化,我们总是要在* .cs文件中做这样的事情: txtMessage.Text = Messages.WarningUserMessage; Messages是资源, txtMessage是TextBlock。
有没有办法强制WPFdevise器重新加载或刷新,而不重build整个项目或解决scheme? 如果出现错误,我会在devise器视图中获得一个选项来刷新devise器。 但是,如果我没有错误,我怎么能让devise师在我做出改变之后更新?
在HTML / CSS中,您可以定义一种可应用于多种元素的样式,例如: .highlight { color:red; } 可以应用于P和DIV,例如: <p class="highlight">this will be highlighted</p> <div class="highlight">this will also be highlighted</div> 但在XAML中,您似乎必须为样式定义TargetType,否则会出现错误: <Style x:Key="formRowLabel" TargetType="TextBlock"> 有没有办法让一个XAML风格被应用到多个元素,甚至让它保持开放的CSS?
我想隐藏(或删除)我的数据网格中的所有行(和随后的单元格)的所有边界,认为一个基本的HTML表格 。 我已经看遍了,大多数问题似乎是关于造型而不是隐藏它们。 我已经试过像这样设置BorderBrush和BorderThickness: <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="BorderThickness" Value="0" /> </Style> </DataGrid.RowStyle> 尝试了CellStyle一样,但没有骰子,仍然看到边界。