การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (2023)

การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (1)

มิอง ชิออน 241คะแนนชื่อเสียง

2023-05-21T19:48:22.0066667+00:00

สวัสดีตอนเย็นทุกคน

ฉันพยายามมาเกือบสัปดาห์แล้วเพื่อให้มันใช้งานได้ แต่ตลอดชีวิตของฉันทำไม่ได้อย่างที่ฉันต้องการ

สิ่งที่ฉันต้องการทำคือเมื่อใช้ตัวกรอง มันจะใช้สีส้มบนปุ่มของคอลัมน์ที่ใช้ด้วย

ดังที่คุณเห็นจากภาพที่นี่ ฉันให้มันทำงานไม่ทางใดก็ทางหนึ่ง

เลยได้สีมาโชว์ที่คอลัมและปุ่ม อยากได้เฉพาะปุ่ม

การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (2)

ตัวกรองนี้แนบมากับชื่อไซต์ ดังนั้นฉันจึงต้องการให้สีของปุ่มแสดงเป็นสีส้มสำหรับปุ่มนั้นเท่านั้น และถ้าตัวกรองถูกลบออก ฉันต้องการให้ตัวกรองกลับไปเป็น transapant

ด้านล่างเป็นของฉัน

เมนวิวโมเดล

MainViewModel สาธารณะ () { ตัวกรองคอลัมน์ = พจนานุกรมใหม่ <สตริง, บูล> (); elfenload = LoadDatabase ใหม่ (); FilterCommand = ใหม่ RelayCommand(ตัวกรอง); ApplyFilterCommand = ใหม่ RelayCommand(ApplyFilter); CurrentFilters = ObservableCollection ใหม่ <ตัวกรอง> (); elfentable = พจนานุกรมใหม่ >(); _databases = ใหม่ ObservableCollection(); ฐานข้อมูลที่ถูกกรอง = ObservableCollection ใหม่ <โหลดฐานข้อมูล> (); // ปั๊ม = ObservableCollection ใหม่ <โหลดฐานข้อมูล> (); FilterTextChangedCommand = ใหม่ RelayCommand (obj => FilterTextChanged (obj เป็นสตริง)); elfenload.InitialzePumps(); foreach (รายการ var ใน elfenload.Pumps) { FilteredDatabases.Add (รายการ); _databases.Add(รายการ); } foreach (รายการ var ใน elfenload.Pumps) { foreach (var prop ใน typeof(LoadDatabases).GetProperties()) { var columnName = prop.Name; var columnValue = prop.GetValue(รายการ)?.ToString(); ถ้า (!string.IsNullOrEmpty(columnValue)) { ถ้า (!elfentable.ContainsKey(columnName)) { // ถ้าชื่อคอลัมน์ยังไม่อยู่ในพจนานุกรม ให้เพิ่มด้วยคอลเล็กชันใหม่ elfentable[columnName] = ObservableCollection ใหม่< ตัวกรอง>(); } ตัวกรอง var = elfentable [ชื่อคอลัมน์]; ถ้า (!filters.Any(f => f.Title == columnValue)) { // ถ้าตัวกรองยังไม่อยู่ในคอลเล็กชัน ให้เพิ่ม filters.Add(ตัวกรองใหม่ { Title = columnValue, IsChecked = true, FilterColor = เท็จ }) ; } } } } elfenviewsource = ใหม่ CollectionViewSource(); elfenviewsource.Source = elfenload.Pumps; // กรองฐานข้อมูล (); //elfendatagrid.ItemsSource = elfenviewsource.View; //elfenviewsource.Filter += Elfenviewsource_Filter; } โมฆะสาธารณะ FilterTextChanged (สตริง filterText) { var searchQuery = filterText; FilterView.Filter = item => { var filter = item as Filter; ถ้า (ตัวกรอง == null) คืนค่าเท็จ; กลับ filter.Title.IndexOf(searchQuery, StringComparison.OrdinalIgnoreCase) >= 0; }; } การค้นหาโมฆะสาธารณะ (พารามิเตอร์วัตถุ) { var searchQuery = พารามิเตอร์เป็นสตริง; FilterView.Filter = item => { var filter = item as Filter; ถ้า (ตัวกรอง == null) คืนค่าเท็จ; กลับ filter.Title.Contains(คำค้นหา); }; } พจนานุกรมสาธารณะ  IsFilterApplied { รับ { พจนานุกรม  ผลลัพธ์ = พจนานุกรมใหม่ (); foreach (คีย์ var ใน ColumnFilters.Keys) { ผลลัพธ์ [คีย์] = IsFilterAppliedToColumn (คีย์); } ส่งคืนผลลัพธ์; } } ส่วนตัว ICommand _isFilterAppliedCommand; ICommand IsFilterAppliedCommand สาธารณะ { รับ { ถ้า (_isFilterAppliedCommand == null) { _isFilterAppliedCommand = ใหม่ RelayCommand( param => this.IsFilterAppliedToColumn (พารามิเตอร์เป็นสตริง), param => param เป็นสตริง); } กลับ _isFilterAppliedCommand; } } บูลสาธารณะ IsFilterAppliedToColumn (string columnName) { return ColumnFilters.ContainsKey(columnName) && ColumnFilters[columnName]; } โมฆะสาธารณะ ApplyFilter (วัตถุวัตถุ) { FilterDatabases (); // อัปเดต ColumnFilters หลังจากกรองฐานข้อมูล // ตรวจสอบว่า CurrentFilteredColumn ไม่เป็น null หรือสตริงว่าง ถ้า (string.IsNullOrEmpty(CurrentFilteredColumn)) { โยนใหม่ InvalidOperationException("CurrentFilteredColumn ไม่สามารถเป็น null หรือสตริงว่าง"); } // คุณสามารถใช้ CurrentFilteredColumn ได้ทุกที่ที่คุณต้องการชื่อคอลัมน์ // อัปเดต ColumnFilters หลังจากกรองฐานข้อมูลสำหรับแต่ละรายการ (คีย์ var ใน elfentable.Keys) { ColumnFilters[key] = elfentable[key].Any(filter => filter.IsChecked) ; ถ้า (ColumnFilters[key]) { // ถ้าตัวกรองถูกนำไปใช้กับคอลัมน์ ให้เปลี่ยน FilterColor เป็น true foreach (ตัวกรอง var ใน elfentable[key]) { filter.FilterColor = true; } } } // ตรวจสอบว่ามีการใช้ตัวกรองกับคอลัมน์ปัจจุบันหรือไม่ if (IsFilterAppliedToColumn(CurrentFilteredColumn)) { FilteredColumnName = CurrentFilteredColumn; } อื่น { FilteredColumnName = null; // ตั้งค่าเป็น null หากตัวกรองถูกลบ } //CurrentFilteredColumn = obj.ToString(); OnPropertyChanged (ชื่อของ (ตัวกรองคอลัมน์)); OnPropertyChanged (ชื่อ (CurrentFilteredColumn)); } โมฆะสาธารณะ FilterDatabases () { FilteredDatabases.Clear (); foreach (var db ใน _databases) { ถ้า (ควรยอมรับ (db)) { FilteredDatabases.Add (db); } } //foreach (คีย์ var ใน elfentable.Keys) //{ // ColumnFilters[key] = elfentable[key].Any(filter => filter.IsChecked); //} OnPropertyChanged("ตัวกรองที่นำไปใช้"); OnPropertyChanged (ชื่อ (ฐานข้อมูลที่ถูกกรอง)); } บูลส่วนตัวควรจะยอมรับ (LoadDatabases ld) { string ColName = ""; จำนวน int; ลอง { foreach (รายการ var ใน ld.GetType().GetProperties()) { ColName = item.Name; var propertyValue = ld.GetType().GetProperty(ColName).GetValue(ld, null); ถ้า (propertyValue == null) ดำเนินการต่อ; // ถ้าค่าเป็น null ให้ไปที่ค่าสตริงการวนซ้ำถัดไป = propertyValue.ToString(); ถ้า (elfentable.ContainsKey (ColName)) { ObservableCollection <ตัวกรอง> elfencurrent; elfentable.TryGetValue (ColName ออก elfencurrent); นับ = 0; ถ้า (elfencurrent != null) { นับ = elfencurrent.Where(w => w.IsChecked).Count(w => w.Title == ค่า); ถ้า (นับ == 0) { คืนค่าเท็จ; } } } } } จับ { กลับจริง; } กลับจริง; } ตัวกรองโมฆะสาธารณะ (พารามิเตอร์วัตถุ) { IsPopupOpen = จริง; สตริง colName = พารามิเตอร์เป็นสตริง; CurrentFilteredColumn = colName; ถ้า (elfentable.ContainsKey(colName)) { elfentable.TryGetValue(colName, out var elfencurrent); ตัวกรองปัจจุบัน ล้าง (); foreach (รายการ var ใน elfencurrent) { CurrentFilters.Add (รายการ); } } // รีเซ็ต FilterColor เป็นเท็จสำหรับตัวกรองทั้งหมดเมื่อนำตัวกรองออกสำหรับแต่ละตัวกรอง (ตัวกรอง var ในตัวกรองปัจจุบัน) { filter.FilterColor = เท็จ; } FilterView = CollectionViewSource.GetDefaultView (ตัวกรองปัจจุบัน); OnPropertyChanged (ชื่อ (FilterView)); OnPropertyChanged (ชื่อ (CurrentFilteredColumn)); }

คลาสตัวกรอง,

บูลส่วนตัว _Ischecked; public bool IsChecked {get { return _Ischecked; }ตั้งค่า { _Ischecked = ค่า; OnPropertyChanged (nameof (IsChecked));}} สตริงส่วนตัว _Title; ชื่อสตริงสาธารณะ { รับ { คืน _Title; }set{ _Title = value;OnPropertyChanged(nameof(Title));}} บูลส่วนตัว _FilterColor = false; บูลสาธารณะ FilterColor { รับ { คืน _FilterColor; } ตั้งค่า { _FilterColor = ค่า; OnPropertyChanged (ชื่อของ (ตัวกรองสี)); } }

และสุดท้าย รหัส xaml

< DataGrid.Resources > <สไตล์ TargetType="DataGridColumnHeader">  ​​       < Setter Property="ContentTemplate">     <ปุ่ม x:Name="btnFilter" Content="[x]" Command="{Binding DataContext.FilterCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding Content, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}" >      < /DataTemplate>           < RowDefinition Height="Auto" />     <ตารางคั่น .Row="0" VerticalAlignment="Bottom" Margin="10,0" Height="3">           

และตัวแปลงคือ

คลาสสาธารณะ ColumnFilterToBrushConverter : IMultiValueConverter { วัตถุสาธารณะ แปลง (วัตถุ [] ค่า, ประเภท targetType, พารามิเตอร์วัตถุ, วัฒนธรรม CultureInfo) { ถ้า (values.Length != 2) ส่งคืน Brushes.Transparent; var ชื่อคอลัมน์ = ค่า [0] เป็นสตริง; var ตัวกรองคอลัมน์ = ค่า [1] เป็นพจนานุกรม <สตริง, บูล>; ถ้า (ชื่อคอลัมน์ == null || ตัวกรองคอลัมน์ == null) ส่งคืน Brushes.Transparent; ถ้า (columnFilters.ContainsKey(columnName) && columnFilters[columnName]) ส่งคืน Brushes.Orange; กลับ Brushes.Transparent; } วัตถุสาธารณะ [] ConvertBack (ค่าวัตถุ, ประเภท [] targetTypes, พารามิเตอร์วัตถุ, วัฒนธรรม CultureInfo) { โยนใหม่ NotImplementedException (); } }

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก

พยายามทำให้มันใช้งานได้เป็นเวลาหนึ่งสัปดาห์ แต่ไม่สามารถทำให้มันทำงานบนคอลัมน์และปุ่มได้

ขอแสดงความนับถือ,

เอลเฟนลีดท็อปแฟน5

มูลนิธิการนำเสนอ Windows

มูลนิธิการนำเสนอ Windows

ส่วนหนึ่งของ .NET Framework ที่มีรูปแบบการเขียนโปรแกรมแบบรวมสำหรับการสร้างแอปพลิเคชันเดสก์ท็อปสายงานธุรกิจบน Windows

2,363 คำถาม

ลงชื่อเข้าใช้เพื่อติดตาม

0{count} คะแนน

  1. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (3)

    ฮุ่ยหลิว-MSFT 17,381คะแนนชื่อเสียง ผู้จำหน่ายไมโครซอฟต์

    2023-05-22T02:56:57.6633333+00:00

    สวัสดี @มิอง ชิออน ยินดีต้อนรับ Microsoft Q&A ฉันไม่สามารถทำซ้ำปัญหาของคุณ ฉันต้องการยืนยันรายละเอียดต่อไปนี้กับคุณ

    รหัสที่สมบูรณ์ของคุณคืออะไรโหลดฐานข้อมูลระดับ? และนิยามของคำว่าเอลเฟนวิวซอร์ส,มุมมองตัวกรอง,คอลัมน์ปัจจุบันที่กรองแล้ว,ชื่อคอลัมน์ที่กรองแล้วและIsPopupOpenในรหัสของคุณ? คำจำกัดความที่ฉันเพิ่มในรหัสด้านล่างตรงกับของคุณหรือไม่

    การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (4)

    ตัวกรองนี้แนบมากับชื่อไซต์ ดังนั้นฉันจึงต้องการให้สีของปุ่มแสดงเป็นสีส้มสำหรับปุ่มนั้นเท่านั้น และถ้าตัวกรองถูกลบออก ฉันต้องการให้ตัวกรองกลับไปเป็น transapant

    คุณต้องการเปลี่ยนสีของปุ่มที่วงกลมไว้หรือไม่?การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (5)

  2. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (6)

    มิอง ชิออน 241คะแนนชื่อเสียง

    2023-05-22T22:34:08.2533333+00:00

    @ฮุ่ยหลิว - MSFTรหัสที่สมบูรณ์สำหรับ loaddata คือ

    LoadDatabases คลาสสาธารณะ: ViewModelBase { การเชื่อมต่อ SQLiteConnection แบบคงที่สาธารณะ = SQLiteConnection ใหม่ ($"Data Source = C:\\Users\\elfenliedtopfan5\\Downloads\\ConfigListing.sqlite;foreign keys=true;"); #region loadpumpdata สาธารณะ IEnumerable GetPumpData() { if (!File.Exists("C:\\Users\\elfenliedtopfan5\\Downloads\\ConfigListing.sqlite")) { Console.WriteLine("ไม่พบไฟล์ฐานข้อมูล! "); ส่งคืน Enumerable.Empty (); } รายการ  resultList = รายการใหม่ (); ลอง { //string getdb = "เลือก * จาก HydraPOS"; // SQLiteCommand elfeninfo = SQLiteCommand ใหม่ (getdb, สายสัมพันธ์); //เปิดการเชื่อมต่อ(); เปิดการเชื่อมต่อ (); // แนบสตริงฐานข้อมูล AttachDb = "ATTACH DATABASE 'C:\\Users\\elfenliedtopfan5\\Downloads\\ConfigListing.sqlite' AS AttachedDb;"; SQLiteCommand AttachCommand = ใหม่ SQLiteCommand (attachDb, สายสัมพันธ์); แนบคำสั่ง ExecuteNonQuery(); สตริง getdb = "เลือก * จาก AttachedDb.HydraPOS"; // สังเกตการเปลี่ยนแปลงชื่อตาราง SQLiteCommand elfeninfo = new SQLiteCommand(getdb, connectionstring); ผลลัพธ์ SQLiteDataReader = elfeninfo.ExecuteReader(); ถ้า (result.HasRows) { ในขณะที่ (result.Read()) { // รับฟิลด์ที่นี่ string _SiteName = result["Site"].ToString(); สตริง _Version = ผลลัพธ์ ["เวอร์ชัน"].ToString (); สตริง _Bunkering = ผลลัพธ์ ["Bunkering"].ToString (); สตริง _PumplinkHostAddress = ผลลัพธ์ ["PumplinkHost"].ToString(); ชื่อไซต์ = _ชื่อไซต์; เวอร์ชัน = _เวอร์ชัน; บังเกอร์ = _บังเกอร์; PumplinkHost = _PumplinkHostAddress; resultList.Add (LoadDatabases ใหม่ (_SiteName, _Version, _Bunkering, _PumplinkHostAddress)); } } อื่น { Console.WriteLine("ตาราง HydraPOS ไม่มีแถว!"); } ปิดการเชื่อมต่อ (); } จับ (ข้อยกเว้น) { Console.WriteLine ("ข้อผิดพลาดในการดึงข้อมูลจากตาราง HydraPOS: " + ex.Message); } ส่งคืนรายการผลลัพธ์; } #endregion สาธารณะ LoadDatabases (String SiteName, String Version, String Bunkering, String PumplinkHostAddress) { this.SiteName = SiteName; this.Version = เวอร์ชั่น; this.Bunkering = บังเกอร์; this.PumplinkHost = ที่อยู่ PumplinkHost; } LoadDatabases สาธารณะ () { } โมฆะสาธารณะ InitialzePumps () { ปั๊ม = ObservableCollection ใหม่  (); Pumps.Clear(); // ไม่ต่ออายุ ล้างเสมอมิฉะนั้นจะทำลายการผูกข้อมูล foreach (var pumpData ใน GetPumpData()) { Pumps.Add(pumpData); } } ส่วนตัว ObservableCollection _Pumps; ObservableCollection สาธารณะ  ปั๊ม { รับ { คืน _Pumps; } ตั้ง { _Pumps = ค่า; OnPropertyChanged (ชื่อของ (ปั๊ม)); } } #region ตรวจสอบการเชื่อมต่อ โมฆะสาธารณะ OpenConnection() { ถ้า (connectionstring.State != System.Data.ConnectionState.Open) { connectionstring.Open(); } } โมฆะสาธารณะ CloseConnection () { ถ้า (connectionstring.State != System.Data.ConnectionState.Closed) { connectionstring.Close (); } } #endregion สตริงส่วนตัว _SiteName; ชื่อไซต์สตริงสาธารณะ { รับ { คืน _SiteName; } ตั้งค่า { _SiteName = ค่า; OnPropertyChanged (ชื่อของ (ชื่อเว็บไซต์)); } } สตริงส่วนตัว _Version; เวอร์ชันสตริงสาธารณะ { รับ { ส่งคืน _Version; } ตั้งค่า { _Version = ค่า; OnPropertyChanged (ชื่อของ (เวอร์ชั่น)); } } สตริงส่วนตัว _Bunkering; Bunkering สตริงสาธารณะ { รับ { คืน _Bunkering; } ตั้งค่า { _Bunkering = ค่า; OnPropertyChanged (ชื่อของ (Bunkering)); } } สตริงส่วนตัว _PumplinkHost; สตริงสาธารณะ PumplinkHost { รับ { คืน _PumplinkHost; } ตั้งค่า { _PumplinkHost = ค่า; OnPropertyChanged (ชื่อของ (PumplinkHost)); } } }

    คอลัมน์ตัวกรองปัจจุบันคือการพิจารณาว่ามีการใช้ตัวกรองหรือไม่ ฉันได้ลองทำสิ่งต่าง ๆ มากมายเพื่อลองและทำให้มันทำงานได้ ส่วนใหญ่นี่คือโค้ดที่ฉันได้เพิ่มเข้าไปเพื่อลองและดีบักว่าทำไมมันถึงเปลี่ยนทั้งหมด คอลัมน์ที่กรองแล้วและขออภัยที่ป๊อปอัปควบคุมสิ่งนี้
    การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (7)

    ดังนั้นแต่ละคอลัมน์จึงปรากฏขึ้นพร้อมรายการทั้งหมดในแต่ละคอลัมน์

    สิ่งที่ฉันพยายามทำคือถ้าใช้ตัวกรองเพื่อบอกชื่อไซต์
    ตัวอย่างเช่น ที่นี่ สิ่งที่เลือกคือล็อคโรงรถ พูดยกเลิกการเลือกทั้งหมด และกดใช้ตัวกรอง ฉันต้องการให้พื้นหลังปุ่ม [X] เปลี่ยนเป็นสีส้มและเฉพาะในคอลัมน์นั้น

    และเมื่อตัวกรองถูกลบออก ฉันอยากให้มันกลับไปเป็นสีเทา แต่ดูเหมือนว่าฉันจะทำไม่ได้

    ฉันแก้ไขกลอนกับคอลัมน์อื่น ๆ ทั้งหมดด้วยปุ่มหากเหมาะสม
    สิ่งอื่น ๆ ทั้งหมดที่คุณเห็นที่นั่นและชี้ให้เห็นหากคุณมองเข้าไป

    ตัวกรองที่ใช้ (เมธอด)
    และตัวกรอง (เมธอด)

    นี่คือที่ที่ฉันลองและเปลี่ยนสีหรือกำหนดว่าควรเปลี่ยนสีหรือไม่เมื่อกดปุ่มใช้ตัวกรองวิธีการใช้ตัวกรองจะถูกดำเนินการ

    ป๊อปอัปรันจากการรวมและ xaml เป็นหลัก

    <ป๊อปอัป x:ชื่อ="popExcel" ความกว้าง="300" ความสูง="300" ตำแหน่ง="Bottom" StaysOpen="False" IsOpen="{Binding IsPopupOpen}"> <พื้นหลังเส้นขอบ="สีเทา" BorderBrush="สีเทา" >                     

    ขอบคุณสำหรับการตอบกลับของคุณชื่นชมมากจริงๆ

  3. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (8)

    ฮุ่ยหลิว-MSFT 17,381คะแนนชื่อเสียง ผู้จำหน่ายไมโครซอฟต์

    2023-05-23T06:28:48.9833333+00:00

    สวัสดี,@มิอง ชิออน. ฉันพยายามกรอกรหัสและคลิก [×] แต่ไม่ได้จำลองสภาพแวดล้อมและผลลัพธ์ของคุณ ปัญหาไม่สามารถทำซ้ำได้เนื่องจากรหัส RelayCommand ของฉันหรือไม่

    เป็นไปได้หรือไม่ที่จะให้รหัสที่สมบูรณ์ซึ่งทำให้เกิดปัญหาซ้ำ หรือคุณสามารถตรวจสอบรหัสของฉันด้านล่างและแสดงรหัสและขั้นตอนที่สามารถสร้างปัญหาซ้ำเพื่อจำลองปัญหาและวิเคราะห์ปัญหา โปรดแสดงโค้ดอื่นๆ รวมถึงโค้ดสไตล์ที่มีผลต่อการทำให้เกิดปัญหา

    xaml:

                              < DataGridTextColumn Header="Version" Binding="{Binding Version}"/>           Grid.RowDefinitions>                 

    รหัสเบื้องหลัง:

    MainViewModel ระดับสาธารณะ: INotifyPropertyChanged { พจนานุกรมสาธารณะ  ColumnFilters { รับ; } LoadDatabases ส่วนตัว elfenload; สาธารณะ RelayCommand FilterCommand { รับ; } สาธารณะ RelayCommand ApplyFilterCommand { รับ; } สาธารณะ ObservableCollection <ตัวกรอง> ตัวกรองปัจจุบัน { รับ; } สาธารณะ CollectionViewSource elfenviewsource { รับ; ชุดส่วนตัว } พจนานุกรมส่วนตัว > elfentable; ObservableCollection ส่วนตัว  _databases; ObservableCollection สาธารณะ <โหลดฐานข้อมูล> ฐานข้อมูลที่กรองแล้ว { รับ; } สตริงสาธารณะ CurrentFilteredColumn { รับ; ชุดส่วนตัว } สตริงสาธารณะ FilteredColumnName { รับ; ชุดส่วนตัว } บูลสาธารณะ IsPopupOpen { รับ; ชุด; } สาธารณะ RelayCommand FilterTextChangedCommand { รับ; } ส่วนตัว ICollectionView icv; ICollectionView FilterView สาธารณะ { รับ { กลับ icv; } ตั้งค่า { icv = ค่า; OnPropertyChanged("ฟิลเตอร์วิว"); } } สาธารณะ MainViewModel () { LoadDatabases.LoadData (); ColumnFilters = พจนานุกรมใหม่ (); elfenload = LoadDatabase ใหม่ (); FilterCommand = ใหม่ RelayCommand(ตัวกรอง); ApplyFilterCommand = ใหม่ RelayCommand(ApplyFilter); CurrentFilters = ObservableCollection ใหม่ <ตัวกรอง> (); elfentable = พจนานุกรมใหม่ >(); _databases = ใหม่ ObservableCollection(); ฐานข้อมูลที่ถูกกรอง = ObservableCollection ใหม่ <โหลดฐานข้อมูล> (); // ปั๊ม = ObservableCollection ใหม่ <โหลดฐานข้อมูล> (); FilterTextChangedCommand = ใหม่ RelayCommand (obj => FilterTextChanged (obj เป็นสตริง)); elfenload.InitialzePumps(); foreach (รายการ var ใน elfenload.Pumps) { FilteredDatabases.Add (รายการ); _databases.Add(รายการ); } foreach (รายการ var ใน elfenload.Pumps) { foreach (var prop ใน typeof(LoadDatabases).GetProperties()) { var columnName = prop.Name; var columnValue = prop.GetValue(รายการ)?.ToString(); ถ้า (!string.IsNullOrEmpty(columnValue)) { ถ้า (!elfentable.ContainsKey(columnName)) { // ถ้าชื่อคอลัมน์ยังไม่อยู่ในพจนานุกรม ให้เพิ่มด้วยคอลเล็กชันใหม่ elfentable[columnName] = ObservableCollection ใหม่< ตัวกรอง>(); } ตัวกรอง var = elfentable [ชื่อคอลัมน์]; ถ้า (!filters.Any(f => f.Title == columnValue)) { // ถ้าตัวกรองยังไม่อยู่ในคอลเล็กชัน ให้เพิ่ม filters.Add(ตัวกรองใหม่ { Title = columnValue, IsChecked = true, FilterColor = เท็จ }); } } } } elfenviewsource = ใหม่ CollectionViewSource(); elfenviewsource.Source = elfenload.Pumps; // กรองฐานข้อมูล (); //elfendatagrid.ItemsSource = elfenviewsource.View; //elfenviewsource.Filter += Elfenviewsource_Filter; } โมฆะสาธารณะ FilterTextChanged (สตริง filterText) { var searchQuery = filterText; FilterView.Filter = item => { var filter = item as Filter; ถ้า (ตัวกรอง == null) คืนค่าเท็จ; กลับ filter.Title.IndexOf(searchQuery, StringComparison.OrdinalIgnoreCase) >= 0; }; } การค้นหาโมฆะสาธารณะ (พารามิเตอร์วัตถุ) { var searchQuery = พารามิเตอร์เป็นสตริง; FilterView.Filter = item => { var filter = item as Filter; ถ้า (ตัวกรอง == null) คืนค่าเท็จ; กลับ filter.Title.Contains(คำค้นหา); }; } พจนานุกรมสาธารณะ  IsFilterApplied { รับ { พจนานุกรม  ผลลัพธ์ = พจนานุกรมใหม่ (); foreach (คีย์ var ใน ColumnFilters.Keys) { ผลลัพธ์ [คีย์] = IsFilterAppliedToColumn (คีย์); } ส่งคืนผลลัพธ์; } } ส่วนตัว ICommand _isFilterAppliedCommand; ICommand IsFilterAppliedCommand สาธารณะ { รับ { ถ้า (_isFilterAppliedCommand == null) { _isFilterAppliedCommand = ใหม่ RelayCommand( param => this.IsFilterAppliedToColumn (พารามิเตอร์เป็นสตริง), param => param เป็นสตริง); } กลับ _isFilterAppliedCommand; } } บูลสาธารณะ IsFilterAppliedToColumn (string columnName) { return ColumnFilters.ContainsKey(columnName) && ColumnFilters[columnName]; } โมฆะสาธารณะ ApplyFilter (วัตถุวัตถุ) { FilterDatabases (); // อัปเดต ColumnFilters หลังจากกรองฐานข้อมูล // ตรวจสอบว่า CurrentFilteredColumn ไม่เป็น null หรือสตริงว่าง ถ้า (string.IsNullOrEmpty(CurrentFilteredColumn)) { โยนใหม่ InvalidOperationException("CurrentFilteredColumn ไม่สามารถเป็น null หรือสตริงว่าง"); } // คุณสามารถใช้ CurrentFilteredColumn ได้ทุกที่ที่คุณต้องการชื่อคอลัมน์ // อัปเดต ColumnFilters หลังจากกรองฐานข้อมูลสำหรับแต่ละรายการ (คีย์ var ใน elfentable.Keys) { ColumnFilters[key] = elfentable[key].Any(filter => filter.IsChecked) ; ถ้า (ColumnFilters[key]) { // ถ้าตัวกรองถูกนำไปใช้กับคอลัมน์ ให้เปลี่ยน FilterColor เป็น true foreach (ตัวกรอง var ใน elfentable[key]) { filter.FilterColor = true; } } } // ตรวจสอบว่ามีการใช้ตัวกรองกับคอลัมน์ปัจจุบันหรือไม่ if (IsFilterAppliedToColumn(CurrentFilteredColumn)) { FilteredColumnName = CurrentFilteredColumn; } อื่น { FilteredColumnName = null; // ตั้งค่าเป็น null หากตัวกรองถูกลบ } //CurrentFilteredColumn = obj.ToString(); OnPropertyChanged (ชื่อของ (ตัวกรองคอลัมน์)); OnPropertyChanged (ชื่อ (CurrentFilteredColumn)); } โมฆะสาธารณะ FilterDatabases () { FilteredDatabases.Clear (); foreach (var db ใน _databases) { ถ้า (ควรยอมรับ (db)) { FilteredDatabases.Add (db); } } //foreach (คีย์ var ใน elfentable.Keys) //{ // ColumnFilters[key] = elfentable[key].Any(filter => filter.IsChecked); //} OnPropertyChanged("ตัวกรองที่นำไปใช้"); OnPropertyChanged (ชื่อ (ฐานข้อมูลที่ถูกกรอง)); } บูลส่วนตัวควรจะยอมรับ (LoadDatabases ld) { string ColName = ""; จำนวน int; ลอง { foreach (รายการ var ใน ld.GetType().GetProperties()) { ColName = item.Name; var propertyValue = ld.GetType().GetProperty(ColName).GetValue(ld, null); ถ้า (propertyValue == null) ดำเนินการต่อ; // ถ้าค่าเป็น null ให้ไปที่ค่าสตริงการวนซ้ำถัดไป = propertyValue.ToString(); ถ้า (elfentable.ContainsKey (ColName)) { ObservableCollection <ตัวกรอง> elfencurrent; elfentable.TryGetValue (ColName ออก elfencurrent); นับ = 0; ถ้า (elfencurrent != null) { นับ = elfencurrent.Where(w => w.IsChecked).Count(w => w.Title == ค่า); ถ้า (นับ == 0) { คืนค่าเท็จ; } } } } } จับ { กลับจริง; } กลับจริง; } ตัวกรองโมฆะสาธารณะ (พารามิเตอร์วัตถุ) { IsPopupOpen = จริง; สตริง colName = พารามิเตอร์เป็นสตริง; CurrentFilteredColumn = colName; ถ้า (elfentable.ContainsKey(colName)) { elfentable.TryGetValue(colName, out var elfencurrent); ตัวกรองปัจจุบัน ล้าง (); foreach (รายการ var ใน elfencurrent) { CurrentFilters.Add (รายการ); } } // รีเซ็ต FilterColor เป็นเท็จสำหรับตัวกรองทั้งหมดเมื่อนำตัวกรองออกสำหรับแต่ละตัวกรอง (ตัวกรอง var ในตัวกรองปัจจุบัน) { filter.FilterColor = เท็จ; } FilterView = CollectionViewSource.GetDefaultView (ตัวกรองปัจจุบัน); OnPropertyChanged (ชื่อ (FilterView)); OnPropertyChanged (ชื่อ (CurrentFilteredColumn)); } เหตุการณ์สาธารณะ PropertyChangedEventHandler PropertyChanged; โมฆะเสมือนที่ได้รับการป้องกัน OnPropertyChanged (string propertyName) { PropertyChanged?.Invoke (สิ่งนี้, PropertyChangedEventArgs ใหม่ (ชื่อคุณสมบัติ)); } } LoadDatabases คลาสสาธารณะ: ViewModelBase { สาธารณะคงโมฆะ LoadData () { SQLiteConnection.CreateFile ("testDB.db"); SQLiteConnection m_dbConnection = ใหม่ SQLiteConnection ("แหล่งข้อมูล = testDB.db"); m_dbConnection.Open(); string sql = "สร้างข้อมูลตาราง (Id INTEGER PRIMARY KEY AUTOINCREMENT, Pumps varchar(20), Site varchar(20), Version varchar(20) ,Bunkering varchar(20) ,PumplinkHost varchar(20) )"; คำสั่ง SQLiteCommand = SQLiteCommand ใหม่ (sql, m_dbConnection); คำสั่ง ExecuteNonQuery(); sql = "INSERT INTO data(Pumps,Site, Version,Bunkering,PumplinkHost) VALUES('pump1', 'POS00801 Mellors Garage-HPOS1','4.7.40.2',' ','127.0.0.1')"; คำสั่ง = SQLiteCommand ใหม่ (sql, m_dbConnection); คำสั่ง ExecuteNonQuery(); sql = "INSERT INTO data(Pumps,Site, Version,Bunkering,PumplinkHost) VALUES('pump2', 'Pos00754 LLANBEDR AIRFIELD-HYDRA1','4.7.40.2',' ','192.168.0.251')"; คำสั่ง = SQLiteCommand ใหม่ (sql, m_dbConnection); คำสั่ง ExecuteNonQuery(); sql = "INSERT INTO data(Pumps,Site, Version,Bunkering,PumplinkHost) VALUES('pump3', 'Pos00752 LLANBEDR AIRFIELD-HYDRA2','4.7.40.2',' ','192.168.0.251')"; คำสั่ง = SQLiteCommand ใหม่ (sql, m_dbConnection); คำสั่ง ExecuteNonQuery(); m_dbConnection.Close(); } สาธารณะคงการเชื่อมต่อ SQLiteConnection สตริง = SQLiteConnection ใหม่ ($"แหล่งข้อมูล = C:\\Users\\elfenliedtopfan5\\Downloads\\ConfigListing.sqlite;foreign keys=true;"); IEnumerable สาธารณะ  GetPumpData () { รายการ  resultList = รายการใหม่  (); ลอง { SQLiteConnection m_dbConnection = ใหม่ SQLiteConnection ("แหล่งข้อมูล = testDB.db"); m_dbConnection.Open(); SQLiteCommand sqlCom = SQLiteCommand ใหม่ ("เลือก * จากข้อมูล", m_dbConnection); ผลลัพธ์ SQLiteDataReader = sqlCom.ExecuteReader(); ถ้า (result.HasRows) { ในขณะที่ (result.Read()) { สตริง _SiteName = ผลลัพธ์ ["Site"].ToString(); สตริง _Version = ผลลัพธ์ ["เวอร์ชัน"].ToString (); สตริง _Bunkering = ผลลัพธ์ ["Bunkering"].ToString (); สตริง _PumplinkHostAddress = ผลลัพธ์ ["PumplinkHost"].ToString(); ชื่อไซต์ = _ชื่อไซต์; เวอร์ชัน = _เวอร์ชัน; บังเกอร์ = _บังเกอร์; PumplinkHost = _PumplinkHostAddress; resultList.Add (LoadDatabases ใหม่ (_SiteName, _Version, _Bunkering, _PumplinkHostAddress)); } } อื่น { Console.WriteLine("ตาราง HydraPOS ไม่มีแถว!"); } ปิดการเชื่อมต่อ (); } จับ (ข้อยกเว้น) { Console.WriteLine ("ข้อผิดพลาดในการดึงข้อมูลจากตาราง HydraPOS: " + ex.Message); } ส่งคืนรายการผลลัพธ์; } LoadDatabases สาธารณะ (String SiteName, String Version, String Bunkering, String PumplinkHostAddress) { this.SiteName = SiteName; this.Version = เวอร์ชั่น; this.Bunkering = บังเกอร์; this.PumplinkHost = ที่อยู่ PumplinkHost; } LoadDatabases สาธารณะ () { } โมฆะสาธารณะ InitialzePumps () { ปั๊ม = ObservableCollection ใหม่  (); Pumps.Clear(); // ไม่ต่ออายุ ล้างเสมอมิฉะนั้นจะทำลายการผูกข้อมูล foreach (var pumpData ใน GetPumpData()) { Pumps.Add(pumpData); } } ส่วนตัว ObservableCollection _Pumps; ObservableCollection สาธารณะ  ปั๊ม { รับ { คืน _Pumps; } ตั้ง { _Pumps = ค่า; OnPropertyChanged (ชื่อของ (ปั๊ม)); } } #region ตรวจสอบการเชื่อมต่อ โมฆะสาธารณะ OpenConnection() { ถ้า (connectionstring.State != System.Data.ConnectionState.Open) { connectionstring.Open(); } } โมฆะสาธารณะ CloseConnection () { ถ้า (connectionstring.State != System.Data.ConnectionState.Closed) { connectionstring.Close (); } } #endregion สตริงส่วนตัว _SiteName; ชื่อไซต์สตริงสาธารณะ { รับ { คืน _SiteName; } ตั้งค่า { _SiteName = ค่า; OnPropertyChanged (ชื่อของ (ชื่อเว็บไซต์)); } } สตริงส่วนตัว _Version; เวอร์ชันสตริงสาธารณะ { รับ { ส่งคืน _Version; } ตั้งค่า { _Version = ค่า; OnPropertyChanged (ชื่อของ (เวอร์ชั่น)); } } สตริงส่วนตัว _Bunkering; Bunkering สตริงสาธารณะ { รับ { คืน _Bunkering; } ตั้งค่า { _Bunkering = ค่า; OnPropertyChanged (ชื่อของ (Bunkering)); } } สตริงส่วนตัว _PumplinkHost; สตริงสาธารณะ PumplinkHost { รับ { คืน _PumplinkHost; } ตั้งค่า { _PumplinkHost = ค่า; OnPropertyChanged (ชื่อของ (PumplinkHost)); } } } คลาสสาธารณะ RelayCommand: ICommand { การกระทำแบบอ่านอย่างเดียวส่วนตัว <วัตถุ> _execute; ส่วนตัวอ่านอย่างเดียวเพรดิเคต _canExecute; Public RelayCommand(Action execute) : this(execute, null) { } public RelayCommand(Action execute, Predicate canExecute) { if (execute == null) Throw new ArgumentNullException("execute"); _execute = ดำเนินการ; _canExecute = สามารถดำเนินการ; } บูลสาธารณะ CanExecute (พารามิเตอร์วัตถุ) { return _canExecute == null ? จริง : _canExecute(พารามิเตอร์); } กิจกรรมสาธารณะ EventHandler CanExecuteChanged { เพิ่ม { CommandManager.RequerySuggested += ค่า; } ลบ { CommandManager.RequerySuggested -= ค่า; } } โมฆะสาธารณะ Execute (พารามิเตอร์วัตถุ) { _execute (พารามิเตอร์); } } ViewModelBase คลาสสาธารณะ: INotifyPropertyChanged { เหตุการณ์สาธารณะ PropertyChangedEventHandler PropertyChanged; โมฆะที่ได้รับการป้องกัน OnPropertyChanged (ชื่อสตริง [CallerMemberName] = null) { PropertyChanged?.Invoke (นี่, PropertyChangedEventArgs (ชื่อ) ใหม่); } } ตัวกรองคลาสสาธารณะ: INotifyPropertyChanged { บูลส่วนตัว _Ischecked; ตรวจสอบบูลสาธารณะ { รับ { กลับ _Ischecked; } ตั้งค่า { _Ischecked = ค่า; OnPropertyChanged (ชื่อของ (ตรวจสอบแล้ว)); } } สตริงส่วนตัว _Title; ชื่อสตริงสาธารณะ { รับ { คืน _Title; } ตั้ง { _Title = ค่า; OnPropertyChanged (ชื่อของ (ชื่อเรื่อง)); } } บูลส่วนตัว _FilterColor = เท็จ; บูลสาธารณะ FilterColor { รับ { คืน _FilterColor; } ตั้งค่า { _FilterColor = ค่า; OnPropertyChanged (ชื่อของ (ตัวกรองสี)); } } เหตุการณ์สาธารณะ PropertyChangedEventHandler PropertyChanged; โมฆะที่ได้รับการป้องกัน OnPropertyChanged (ชื่อสตริง [CallerMemberName] = null) { PropertyChanged?.Invoke (นี่, PropertyChangedEventArgs (ชื่อ) ใหม่); } } คลาสสาธารณะ ColumnFilterToBrushConverter : IMultiValueConverter { วัตถุสาธารณะ Convert (object [] ค่า, Type targetType, พารามิเตอร์วัตถุ, CultureInfo culture) { if (values.Length != 2) ส่งคืน Brushes.Transparent; var ชื่อคอลัมน์ = ค่า [0] เป็นสตริง; var ตัวกรองคอลัมน์ = ค่า [1] เป็นพจนานุกรม <สตริง, บูล>; ถ้า (ชื่อคอลัมน์ == null || ตัวกรองคอลัมน์ == null) ส่งคืน Brushes.Transparent; ถ้า (columnFilters.ContainsKey(columnName) && columnFilters[columnName]) ส่งคืน Brushes.Orange; กลับ Brushes.Transparent; } วัตถุสาธารณะ [] ConvertBack (ค่าวัตถุ, ประเภท [] targetTypes, พารามิเตอร์วัตถุ, วัฒนธรรม CultureInfo) { โยนใหม่ NotImplementedException (); } }

    ผลลัพธ์:

    การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (9)

ลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น

(Video) Visual Studio 2019 | C# and SQL Server (ADO.NET) | Point Of Sale System (Lecture 1-6)

2 คำตอบ

จัดเรียงตาม:ใหม่ล่าสุด

เป็นประโยชน์มากที่สุด ใหม่ล่าสุด เก่าที่สุด

  1. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (10)

    ฮุ่ยหลิว-MSFT 17,381คะแนนชื่อเสียง ผู้จำหน่ายไมโครซอฟต์

    2023-05-24T03:11:54.67+00:00

    สวัสดี @มิอง ชิออน สำหรับปัญหาของพื้นหลังทริกเกอร์ของปุ่มใน DataGridColumnHeader คุณสามารถใช้รหัสต่อไปนี้

     <สไตล์ TargetType="DataGridColumnHeader">   < Setter.Value>                ปุ่ม สไตล์> ปุ่ม>      

    ผลลัพธ์:

    การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (11)

    หากคำตอบเป็นประโยชน์ โปรดคลิก "ยอมรับคำตอบ" และโหวตให้

    บันทึก:โปรดทำตามขั้นตอนในของเราเอกสารเพื่อเปิดใช้งานการแจ้งเตือนทางอีเมล หากคุณต้องการรับการแจ้งเตือนทางอีเมลที่เกี่ยวข้องสำหรับเธรดนี้

    1. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (12)

      มิอง ชิออน 241คะแนนชื่อเสียง

      2023-05-24T20:20:20.31+00:00

      ใช่มันดูน่าทึ่ง - เมื่อคุณใช้ครั้งแรกมันจะเน้นปุ่มทั้งหมดโดยทั่วไปว่าฉันต้องการอะไรถ้าคุณยกเลิกการเลือกหรือทำอะไรกับตัวกรองในคอลัมน์

      ดังนั้นโดยค่าเริ่มต้น พวกมันทั้งหมดจะถูกตรวจสอบและไม่มีการใช้ตัวกรอง ดังนั้นหากคุณยกเลิกการเลือกใดๆ มันจะเน้นชื่อไซต์ให้เป็นสีส้ม และหากคุณตรวจสอบทุกอย่างอีกครั้ง มันจะลบตัวกรองออก

      vise verse กับตัวอื่น ๆ ทั้งหมด หากคุณยกเลิกการเลือกสิ่งใดจากเวอร์ชัน มันจะเน้นเป็นสีส้มโดยรู้ว่ามีการใช้ตัวกรอง หากคุณตรวจสอบค่าทั้งหมดอีกครั้งและไม่มีการใช้ตัวกรอง มันจะกลับไปโปร่งใสและนำพื้นหลังสีส้มออก

      ถ้าฉันอธิบายถูกก็ขอโทษด้วยที่ตอบช้า ฉันทำงานกะ 12 ชั่วโมง แต่หวังว่าฉันจะเข้าใจได้ ขอโทษที่มีปัญหาในการอธิบายอย่างชัดเจน

      ขอแสดงความนับถือ,

      ส่วนน้อย

    2. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (13)

      ฮุ่ยหลิว-MSFT 17,381คะแนนชื่อเสียง ผู้จำหน่ายไมโครซอฟต์

      2023-05-26T07:40:08.2333333+00:00

      สวัสดี @มิอง ชิออน ถ้าคุณต้องการเอฟเฟกต์ต่อไปนี้ คุณสามารถใช้รหัสต่อไปนี้ หากเอฟเฟกต์ไม่ใช่สิ่งที่คุณต้องการ โปรดถ่ายภาพหน้าจอและอธิบายผลลัพธ์ที่คาดหวังไว้ในรูปภาพ

        

      ตัวแปลง:

      คลาสสาธารณะ ColumnFilterToBrushConverter : IMultiValueConverter { วัตถุสาธารณะ แปลง (วัตถุ [] ค่า, ประเภท targetType, พารามิเตอร์วัตถุ, วัฒนธรรม CultureInfo) { ถ้า (values.Length != 3) ส่งคืน Brushes.Transparent; var ชื่อคอลัมน์ = ค่า [0] เป็นสตริง; var filteredColumnName = ค่า [1] เป็นสตริง; var ตัวกรองคอลัมน์ = ค่า [2] เป็นพจนานุกรม <สตริง, บูล>; ถ้า (ชื่อคอลัมน์ == null || ตัวกรองคอลัมน์ == null) ส่งคืน Brushes.Transparent; ถ้า (columnName == filteredColumnName&&columnFilters.ContainsKey(columnName) && columnFilters[columnName]) { //var clickedColumn = พารามิเตอร์เป็นสตริง; // ถ้า (ชื่อคอลัมน์ == คลิกคอลัมน์) กลับ Brushes.Orange; } กลับ Brushes.Transparent; } วัตถุสาธารณะ [] ConvertBack (ค่าวัตถุ, ประเภท [] targetTypes, พารามิเตอร์วัตถุ, วัฒนธรรม CultureInfo) { โยนใหม่ NotImplementedException (); } }

      ผลลัพธ์:

      การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (14)

    3. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (15)

      ฮุ่ยหลิว-MSFT 17,381คะแนนชื่อเสียง ผู้จำหน่ายไมโครซอฟต์

      2023-05-31T01:38:43.6333333+00:00

      สวัสดี @มิอง ชิออน มีการปรับปรุงใด ๆ สำหรับคำถาม? คำตอบของฉันช่วยแก้ปัญหาของคุณหรือไม่? ถ้าเป็นเช่นนั้นคุณยอมรับได้ว่าเป็นคำตอบ มีประโยชน์สำหรับสมาชิกชุมชนที่มีคำถามที่เกี่ยวข้อง

    ลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น

  2. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (16)

    มิอง ชิออน 241คะแนนชื่อเสียง

    2023-05-23T20:50:56.3133333+00:00

    ฉันได้บีบอัดไฟล์โครงการเพื่อดูสิ่งเดียวที่ฉันไม่สามารถรวมได้คือฐานข้อมูลเป็นข้อมูลจริง แต่รหัสโครงการอยู่ที่นี่

    https://www.mediafire.com/file/fmx84oixiqlx7iw/DatabaseFiltering.zip/file

    นี่คือโครงการเต็มรูปแบบ

    1. การเปลี่ยนสีปุ่มบนปุ่มคอลัมน์เมื่อใช้ฟิลเตอร์ wpf - Microsoft QA (17)

      มิอง ชิออน 241คะแนนชื่อเสียง

      2023-05-23T20:52:42.8033333+00:00

      @ฮุ่ยหลิว - MSFT

    ลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น

ลงชื่อเข้าใช้เพื่อตอบ

กิจกรรม

ลงชื่อเข้าใช้เพื่อติดตามคำถามและผู้ใช้

References

Top Articles
Latest Posts
Article information

Author: Madonna Wisozk

Last Updated: 09/16/2023

Views: 5401

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Madonna Wisozk

Birthday: 2001-02-23

Address: 656 Gerhold Summit, Sidneyberg, FL 78179-2512

Phone: +6742282696652

Job: Customer Banking Liaison

Hobby: Flower arranging, Yo-yoing, Tai chi, Rowing, Macrame, Urban exploration, Knife making

Introduction: My name is Madonna Wisozk, I am a attractive, healthy, thoughtful, faithful, open, vivacious, zany person who loves writing and wants to share my knowledge and understanding with you.