我拥有的是具有IsReadOnly
属性的对象.如果此属性为true,我想将IsEnabled
Button(例如)上的属性设置为false.
我想相信我可以轻松地做到这一点,IsEnabled="{Binding Path=!IsReadOnly}"
但不能与WPF一起使用.
我不得不经历所有的风格设置吗?对于像将一个bool设置为另一个bool的反向那样简单的事情,似乎太过冗长.
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
Run Code Online (Sandbox Code Playgroud) 在Winforms中你可以说
if ( DesignMode )
{
// Do something that only happens on Design mode
}
Run Code Online (Sandbox Code Playgroud)
在WPF中有这样的东西吗?
有谁知道如何在WPF(3.5SP1)中数据绑定WebBrowser的.Source属性?我有一个listview,我希望在左边有一个小的WebBrowser,在右边有内容,并在每个WebBrowser的源中为每个绑定到列表项的对象中的URI进行数据绑定.
这是我迄今为止的概念证明,但" <WebBrowser Source="{Binding Path=WebAddress}"
"不编译.
<DataTemplate x:Key="dealerLocatorLayout" DataType="DealerLocatorAddress">
<StackPanel Orientation="Horizontal">
<!--Web Control Here-->
<WebBrowser Source="{Binding Path=WebAddress}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
Width="300"
Height="200"
/>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Path=CompanyName}" FontWeight="Bold" Foreground="Blue" />
<TextBox Text="{Binding Path=DisplayName}" FontWeight="Bold" />
</StackPanel>
<TextBox Text="{Binding Path=Street[0]}" />
<TextBox Text="{Binding Path=Street[1]}" />
<TextBox Text="{Binding Path=PhoneNumber}"/>
<TextBox Text="{Binding Path=FaxNumber}"/>
<TextBox Text="{Binding Path=Email}"/>
<TextBox Text="{Binding Path=WebAddress}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud) 我已经为IIS7安装了静态和动态压缩,并web.config
在我的应用程序Virtual Folder
级别设置了两个值.据我了解,我不再需要在服务器或站点级别启用压缩,我可以使用我的web.config文件在每个文件夹的基础上管理它.
我的.config
文件中有两个设置,我已经设置为我的应用程序自定义gzip:
<httpCompression dynamicCompressionDisableCpuUsage="90"
dynamicCompressionEnableCpuUsage="0">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<remove mimeType="*/*"/>
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
dynamicCompressionBeforeCache="true" />
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,我可以清楚地看到没有使用gzip,因为我的页面大小是相同的.我也在使用YSlow for FireFox,这也证实我的页面没有被gziped.
我在这里错过了什么?在IIS6中,只需指定文件类型,并将压缩级别设置在0-10之间即可.我没有记录需要记录指定文件类型或压缩级别,因为默认值似乎涵盖了文件类型,我没有在任何地方看到级别.
我有一个订单输入表单,其中包含一个ListBox
包含订单项列表的表单.我有我的项目模板,其中一个值是ComboBox
我的每个项目中的一个.
现在,我的状态还可以创建贷项通知单的,除了采购订单,但是当我创建一个贷项通知单,我希望把话说"贷项通知单"在列表框中,然而,TextBlock
盖了ComboBox
两个我行项目.我想将点击事件传递TextBlock
给ComboBox
es,但我不知道该怎么做.
这就是我所拥有的,(也许我对此完全错了,我有点像WPF的菜鸟)
<ListBox SelectionMode="Single" Grid.Row="2"
ItemsSource="{Binding Path=LineItems}" HorizontalContentAlignment="Stretch"
IsSynchronizedWithCurrentItem="True" Background="#66FFFFFF">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="WhiteSmoke"/>
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsPartBackOrder}" Value="True">
<Setter Property="Background" Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type Entities:SalesOrderLineItem}" >
<OrderEntry:SalesOrderLineItemCreate DataContext="{Binding}" DeleteSalesOrderLineItem="DeleteSalesOrderLineItem" Margin="0,3,3,0" >
<OrderEntry:SalesOrderLineItemCreate.Resources>
<Style TargetType="{x:Type OrderEntry:SalesOrderLineItemCreate}">
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource=
{
RelativeSource
Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}
},
Path=IsSelected
}" Value="True">
<Setter Property="Background" Value="LightBlue" />
<Setter Property="Foreground" …
Run Code Online (Sandbox Code Playgroud) 在Winforms中,我可以将进度条的ProgressBarStyle设置为Marqee,这样就可以在不必设置的情况下自行设置进度条,对于我不知道要采取多长时间的进程,没有好的方法报告回UI.
我想在WPF中做同样的事情,但我无法找到一种方法来避免托管winform进度条,这似乎适得其反.
我怎样才能在WPF中解决这个问题?我必须主持一个winform进度条吗?
我有一个显示销售订单的ListView,并按状态对它们进行分组.在WinForms中,我在每个组底部都有一个页脚,显示了每个组的总销售价格,我想在WPF中做同样的事情.
我已经想出如何对订单进行分组,但我无法弄清楚如何创建一个页脚.
这是我目前的团体风格:
<ListView.GroupStyle>
<GroupStyle HidesIfEmpty="True">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<!--CollectionViewGroup.Name will be assigned the value of Status for that group.-->
<!--http://stackoverflow.com/questions/639809/how-do-i-group-items-in-a-wpf-listview-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=Name}" HorizontalAlignment="Left" FontWeight="Bold" Foreground="Black"/>
<Line Grid.Column="1" Stroke="Black" X2="500" Fill="Black" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
Run Code Online (Sandbox Code Playgroud) 我想为在WPF中的listview内部数据绑定的GridViewColumn设置背景颜色.我不知道怎么问这个问题对于WPF来说还是比较新的,否则我不会打扰你们所有人.
我想根据数据绑定对象中的bool标志更改整行的背景颜色.
在这种情况下,我有一个"CaseDetail"对象,当有内部注释"IsInternalNote"时,我想要改变行的颜色.
我怎样才能在WPF中解决这个问题?
我现在拥有的(非常简单),它不会改变颜色.
<ListView ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Date, StringFormat=MMM dd\, yyyy h:mm tt}" Header="Date" Width="Auto" />
<GridViewColumn DisplayMemberBinding="{Binding SubmittedBy}" Header="Submitted By" Width="Auto" />
<GridViewColumn Width="Auto" Header="Description" x:Name="colDesc">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ScrollViewer MaxHeight="80" Width="300">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Description}" TextWrapping="Wrap" />
<TextBlock Text="{Binding File.FileName}" TextWrapping="Wrap" />
</StackPanel>
</ScrollViewer>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我有一个ListView
我希望将结果分组,但我发现的例子不起作用.如何对结果进行分组?
我想分组Status
自定义对象的属性.
这就是我所拥有的:
<ListView IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Background="Transparent" SelectionChanged="ListView_SelectionChanged"
Name="lstShelvedOrders">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="15"
Text="{Binding Path=Status}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Width" Value="Auto" />
<Setter Property="FontSize" Value="10.4" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Number}" Header="Shelve ID" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Customer}" Header="Customer" />
<GridViewColumn DisplayMemberBinding="{Binding Path=PurchaseOrderNo}" Header="PO Number" />
<GridViewColumn DisplayMemberBinding="{Binding Path=SubmittedBy}" Header="Shelved By" />
<GridViewColumn DisplayMemberBinding="{Binding Path=OrderDate, StringFormat=MMM dd\, yyyy}" Header="Date" />
<GridViewColumn …
Run Code Online (Sandbox Code Playgroud) 我在WPF中有一个文本框,它是列表框的数据窗口的一部分.在那个文本框中我可以删除,退格,空格键,但我不能输入新的单词,字母或数字.我可以从记事本粘贴.
我在这里错过了什么?
<ListBox Grid.Column="1"
ItemsSource="{Binding Details}"
VirtualizingStackPanel.VirtualizationMode="Recycling"
HorizontalContentAlignment="Stretch" >
<ListBox.Resources>
<DataTemplate DataType="{x:Type Entities:RADetailEntry}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" />
<TextBox Grid.Column="1" IsReadOnly="False" IsEnabled="True"
Text="{Binding Path=Description, Mode=TwoWay}" TextWrapping="Wrap"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextAlignment="Left" />
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
Run Code Online (Sandbox Code Playgroud)