首页 > 其他分享 >【wpf】ListBoxItemIndexConverter转换器listbox序号自更新

【wpf】ListBoxItemIndexConverter转换器listbox序号自更新

时间:2024-03-28 11:35:45浏览次数:30  
标签:index listView indexPrefix object ListBoxItemIndexConverter values wpf null list


public class ListBoxItemIndexConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { string indexPrefix = null; if (parameter != null && parameter is string indexPrefixPara) { indexPrefix = ResourceHelper.GetResource<string>(indexPrefixPara); } if (values == null || values.Length < 2) return $"{indexPrefix}1"; if (values[0] is ListBoxItem listBoxItem) { var listView = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox; if (listView == null) return $"{indexPrefix}1"; var index = 0; if (values.Length >= 3 && values[2] != null && int.TryParse(values[2].ToString(), out var i)) index = listView.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; else index = listView.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; return $"{indexPrefix}{index}"; } return $"{indexPrefix}1"; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }

 使用示例:

<TextBlock>
    <TextBlock.Text>
        <!--ConverterParameter传参前缀,可省略-->
        <MultiBinding Converter="{StaticResource ListBoxItemIndexConverter}" 
                      ConverterParameter="序号">
            <Binding RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}"/>
            <!--控制是否更新-->
            <Binding Path="IsUpdateIndex" Mode="TwoWay"/>
            <!--控制从哪个序号开始,可省略-->
            <Binding Path="StartIndex" Mode="TwoWay"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

 

标签:index,listView,indexPrefix,object,ListBoxItemIndexConverter,values,wpf,null,list
From: https://www.cnblogs.com/moon-stars/p/18099928

相关文章

  • WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页
    1.在DataGrid中添加PreviewMouseWheel事件,并将事件的Handled属性设置为false,以便将滚动事件传递给ScrollViewer。示例代码如下:<DataGridPreviewMouseWheel="DataGrid_PreviewMouseWheel"><!--DataGrid的其他设置--></DataGrid>privatevoidDataGrid_PreviewMouseWh......
  • WPF StringFormat在Label控件无效
    在WPF程序设计时,若使用Label控件绑定数据后StringFormat进行格式化显示时发现设定的StringFormat无效,但TextBlock控件中使用StringFormat显示正常,导致Label控件StringFormat失败的根本原因在于Label控件的Content属性是一个object对象,Binding.StringFormat仅作用于string类型属性......
  • 【wpf】 枚举转bool转换器
    ///<summary>///枚举转bool///</summary>publicclassEnum2BooleanConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnva......
  • WPF自定义Panel:让拖拽变得更简单
       在WPF应用程序中,拖放操作是实现用户交互的重要组成部分。通过拖放操作,用户可以轻松地将数据从一个位置移动到另一个位置,或者将控件从一个容器移动到另一个容器。然而,WPF中默认的拖放操作可能并不是那么好用。为了解决这个问题,我们可以自定义一个Panel来实现更简单的拖......
  • WPF中自定义按钮实现最大化最小化动画过度效果
    需要使用WindowsAPI[DllImport("user32.dll",EntryPoint="SetWindowLong")]privatestaticexternintSetWindowLong32(HandleRefhWnd,intnIndex,intdwNewLong);[DllImport("user32.dll",EntryPoint="SetWindowLongPtr"......
  • WPF —— Menu数据绑定实例
    {Binding}因为我们操作这个集合对象,而不是集中某个对象,所以直接写{Binding}就行      如果绑定是list集合的某个对象属性时候,需要{bindingvpath=属性名}<Menux:Name="m1"ItemsSource="{Binding}"></Menu>树形数据模板:分层数据模板,主要是用于MenuIt......
  • 关于WPF进度条的使用
    本文讲述如何在软件启动和窗体按钮操作时弹出进度条。运行环境:Win10、VS2022一、新建WPF项目。 二、新建WPF窗体。1、新建窗体,取名DefProcessBar.xaml。 2、设置窗体属性、样式。<Windowx:Class="WpfApp4.DefProcessBar"xmlns="http://schemas.microsoft.c......
  • WPF C# create canvas and draw ellipse in canvas
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;......
  • 界面控件DevExpress WinForms/WPF v23.2 - 电子表格支持表单控件
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!表单控件表示交互元素(按钮、复选框和下拉列表),并在......
  • WPF绑定之道:为何选择属性而非字段,提升灵活性与可控性
     概述:WPF支持绑定到对象的属性而不是字段,主要因为属性提供了更多控制和扩展性。属性包含get和set方法,支持数据验证和通知属性更改,而字段通常被认为是内部实现。使用属性使WPF能够更灵活、可控地与数据交互,提高代码的可读性和可维护性。WPF(WindowsPresentationFoundation)支......