- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个自定义控件,其中包含一个 ComboBox,我在其中创建了多个数据列。这很好用,但我一直无法弄清楚如何将标题行置于下拉列表的顶部,并为每一列添加标题。此外,如果可能的话,它希望能够设计它的样式,以便行交替颜色。鉴于下面的 XAML,关于如何执行此操作的任何想法?
<UserControl x:Class="ActualsAllocations.LegalEntityDropDown"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="28" d:DesignWidth="400">
<UserControl.Resources>
<ResourceDictionary>
<Style x:Key="MainComboStyle" TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
</Style.Triggers>
</Style >
</ResourceDictionary>
</UserControl.Resources>
<DockPanel>
<Label Name="lblTitle" Width="75" Content="Title" Margin="3,3"/>
<ComboBox Name="cmbMain" HorizontalAlignment="Stretch" Margin="3,3" ItemsSource="{Binding}" ItemContainerStyle="{StaticResource MainComboStyle}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=VersionID}" Width="25" Margin="3,0"/>
<TextBlock Text="{Binding Path=VersionName}" Width="220" Margin="3,0"/>
<TextBlock Text="{Binding Path=EndDate, StringFormat={}{0:M/yyyy}}" Width="50" Margin="3,0" />
<TextBlock Text="{Binding Path=CreatedByUserName}" Width="100" Margin="3,0"/>
<TextBlock Text="{Binding Path=CreateDate}" Width="120" Margin="3,0"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ComboBox>
</DockPanel>
</UserControl>
最佳答案
关于行的替代颜色我会尝试使用 ItemTemplateSelector 你可以阅读 here .
对于 header ,我会尝试使用 CompositeCollection 描述 here .
如果您选择此 ItemTemplateSelector,则不需要为 header 设置不同的模板,因为它已经是 ComboBoxItem 并且模板将被忽略。
ItemTemplateSelector 代码:
public class CustomTemplateSelector : DataTemplateSelector
{
public DataTemplate EvenTemplate { get; set; }
public DataTemplate OddTemplate { get; set; }
public CollectionViewSource Collection { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var list = Collection.Source as IList;
if (list != null)
{
if (list.IndexOf(item) % 2 == 0)
{
return EvenTemplate;
}
else
{
return OddTemplate;
}
}
return EvenTemplate;
}
}
组合框的 Xaml:
<DockPanel>
<DockPanel.Resources>
<Style x:Key="MainComboStyle" TargetType="{x:Type ComboBoxItem}">
<Style.Triggers></Style.Triggers>
</Style >
<CollectionViewSource x:Key="list" Source="{Binding}"/>
<DataTemplate x:Key="EventTemplate">
<StackPanel Orientation="Horizontal" Background="Red">
<TextBlock Text="{Binding Path=VersionID}" Width="25" Margin="3,0"/>
<TextBlock Text="{Binding Path=VersionName}" Width="220" Margin="3,0"/>
<TextBlock Text="{Binding Path=EndDate, StringFormat={}{0:M/yyyy}}" Width="50" Margin="3,0" />
<TextBlock Text="{Binding Path=CreatedByUserName}" Width="100" Margin="3,0"/>
<TextBlock Text="{Binding Path=CreateDate}" Width="120" Margin="3,0"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="OddTemplate">
<StackPanel Orientation="Horizontal" Background="Green">
<TextBlock Text="{Binding Path=VersionID}" Width="25" Margin="3,0"/>
<TextBlock Text="{Binding Path=VersionName}" Width="220" Margin="3,0"/>
<TextBlock Text="{Binding Path=EndDate, StringFormat={}{0:M/yyyy}}" Width="50" Margin="3,0" />
<TextBlock Text="{Binding Path=CreatedByUserName}" Width="100" Margin="3,0"/>
<TextBlock Text="{Binding Path=CreateDate}" Width="120" Margin="3,0"/>
</StackPanel>
</DataTemplate>
<local:CustomTemplateSelector OddTemplate="{StaticResource OddTemplate}"
EvenTemplate="{StaticResource EventTemplate}"
Collection="{StaticResource list}"
x:Key="customTemplateSelector" />
</DockPanel.Resources>
<Label Name="lblTitle" Width="75" Content="Title" Margin="3,3"/>
<ComboBox Name="cmbMain" HorizontalAlignment="Stretch" Margin="3,3"
ItemTemplateSelector="{StaticResource customTemplateSelector}" >
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem IsEnabled="False" Foreground="Black"> VersionID | VersionName | EndDate | CreatedByUser | CreateDate</ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource list}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</DockPanel>
你可以考虑制作样式表头,这样会更好看。您也可以将此 dataTemplates 的一部分放在单独的控件中,这样就可以避免重复代码。
关于c# - WPF ComboBox 中带有列的不可选择的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818017/
我需要默认提供多项选择,这样用户就不必按住 ctrl。希望得到一些帮助,谢谢。 最佳答案 $("#selectable").selectable(); $("#selectable").on(
有没有一种简单的方法可以在 Cocoa 中创建一个可选择的 NSRect?需要一个可以选择并在单击鼠标后保持选中状态的矩形。 谢谢。 最佳答案 NSRect 只是一个具有位置和大小的结构。它不是一个实
我不知道我使用 jQuery UI 的 .selectable() API 是否完全错误。该脚本的预期结果是在选择黑框 (div) 期间简单地获得一些警报: http://jsfiddle.net/j
我试图创建两个可选择的 div。 div 应该表现得像按钮。我希望能够使用左右箭头选择其中一个 div。到目前为止,我能够使用这段代码实现这一点 document.addEventListener("
你好 StackOverFlow 社区, 我有一个标准的 UIBezierPath 如下: let π:CGFloat = CGFloat(M_PI) override func drawRect(r
我有一个 WPF TextBox白色背景。我给了它一些 Padding这样文本周围就有一个“边距”(类似于 MS Word 中的边距)。 然而,与 Word 不同的是,文本周围的这个空白区域不是“事
我的问题:我动态生成列表,并且我想让它们可供选择。 例如: function gen() { //list generation $('#blank').append(listHtml
我已经为我的 DatePicker View 设置了一个 minDate() 。现在的问题是我仍然可以从指定的最短日期之前的日期中进行选择。 我的java: long thirtyDaysInMill
我正在使用 SWT 库在 Eclipse 中创建一个向导页面。到目前为止,我已成功创建页面,但只有一个问题:- 未选择 SWT 复合 Material 。 我的向导页面包含一个 scrolledCom
https://www.youtube.com/watch?v=SR28jj4nTEkthis是链接][1] 我想了解如何使 TextView 可选,选择并复制此链接,但此链接已失效,无法通过此链接访
我一直在 Android Studio 中开发一个简单的计算器应用程序。结果窗口(放置数字用于计算的位置)我最初设置为 TextView。但是,我还没有找到在使用 TextView 时实现光标的方法。
我正在尝试获得类似于 Facebook 使用的设置(如果他们使用 UITextView)。我希望自动检测链接,但我不希望 UITextView 中的任何其他文本可选。因此,用户可以单击链接但无法选择任
我想要一个不可选择的 UITableViewCell,而其附属 View (在我的例子中是 UISwitch)是可编辑的。 问题是我还有另外两个单元,其中一个需要保持事件状态;这与 iOS 日历应用程
我想知道 jQuery UI Selectable 上是否有一个选项可以让我禁用 Ctrl+Click,但仍保持可拖动以进行多项选择。在我的项目中,我希望人们能够选择多个,但只能通过拖动,而不是通过
这个问题在这里已经有了答案: Jquery selectable for range selection (slider behaviour) (3 个答案) 关闭 2 年前。 我想使用类似于 jQ
所以我几个小时以来一直在寻找解决方案,但我就是找不到我的错误。我使用循环创建了 JCheckBoxes 并将其添加到滚动面板中。但如果我检查它们,isSelected() 总是返回 false。 im
我想让 EditText 或 Textview 在我的 android 项目中可选。项目适用于 android 4.0+。我添加了这个:txtView.setTextIsSelectable(true
所以我有一张 Accordion 风格的 table 。单击一行时,会显示五个单选按钮。然后,用户应该能够单击这些按钮。它成功显示了按钮,但是当单击按钮时,它不是突出显示所选按钮,而是缩小了行本身。我
我有一大堆可选择的对象。 您可以单击它们,然后它们的 ID 会添加到表单中,取消选择它们时,它会再次从表单中删除。 我有一个工作版本,直到我注意到有时如果你点击太快,id 会被添加多次。 为了禁止这种
当我们已经在 html 页面中有 onselectstart="return false;" 时,有谁知道如何使用 javascript 使特定的 div 可选(复制/粘贴)
我是一名优秀的程序员,十分优秀!