คำถามติดแท็ก wpf

Windows Presentation Foundation หรือ WPF เป็นระบบย่อยสำหรับการแสดงผลส่วนต่อประสานกับผู้ใช้ในแอพพลิเคชั่นที่ทำงานบน Windows

8
ฉันจะผูก WPF DataGrid กับจำนวนคอลัมน์ตัวแปรได้อย่างไร
แอปพลิเคชัน WPF ของฉันสร้างชุดข้อมูลซึ่งอาจมีจำนวนคอลัมน์ที่แตกต่างกันในแต่ละครั้ง รวมอยู่ในผลลัพธ์คือคำอธิบายของแต่ละคอลัมน์ที่จะใช้ในการจัดรูปแบบ เอาต์พุตเวอร์ชันที่เรียบง่ายอาจมีลักษณะดังนี้: class Data { IList<ColumnDescription> ColumnDescriptions { get; set; } string[][] Rows { get; set; } } คลาสนี้ถูกตั้งค่าเป็น DataContext บน WPF DataGrid แต่จริงๆแล้วฉันสร้างคอลัมน์โดยใช้โปรแกรม: for (int i = 0; i < data.ColumnDescriptions.Count; i++) { dataGrid.Columns.Add(new DataGridTextColumn { Header = data.ColumnDescriptions[i].Name, Binding = new Binding(string.Format("[{0}]", i)) }); } …
124 c#  wpf  xaml  data-binding  datagrid 

5
มีวิธีเชื่อมโยงตัวแปลงค่าหลายตัวใน XAML หรือไม่
ฉันมีสถานการณ์ที่ฉันต้องแสดงค่าจำนวนเต็มโดยผูกไว้กับคุณสมบัติในบริบทข้อมูลของฉันหลังจากใส่ผ่านการแปลงสองรายการ: ย้อนกลับค่าภายในช่วง (เช่นช่วงคือ 1 ถึง 100 ค่าใน datacontext คือ 90 ผู้ใช้เห็นค่า 10) แปลงตัวเลขเป็นสตริง ฉันรู้ว่าฉันสามารถทำได้ทั้งสองขั้นตอนโดยการสร้างตัวแปลงของฉันเอง (ซึ่งใช้ IValueConverter) อย่างไรก็ตามฉันมีตัวแปลงค่าแยกต่างหากซึ่งทำเพียงขั้นตอนแรกและขั้นตอนที่สองครอบคลุมโดย Int32Converter มีวิธีใดบ้างที่ฉันสามารถเชื่อมโยงคลาสที่มีอยู่สองคลาสนี้ใน XAMLโดยไม่ต้องสร้างคลาสเพิ่มเติมที่รวมคลาสเหล่านั้นไว้ หากฉันต้องการชี้แจงเรื่องนี้โปรดแจ้งให้เราทราบ :) ขอบคุณ

25
คุณสมบัติที่ซ่อนอยู่ของ WPF และ XAML?
ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ นี่คือคุณสมบัติที่ซ่อนอยู่จำนวนมากซึ่งกล่าวถึงในภาษาต่างๆ ตอนนี้ฉันอยากรู้เกี่ยวกับคุณสมบัติที่ซ่อนอยู่ของ XAML และ WPF หรือไม่? สิ่งที่ฉันพบคือเหตุการณ์คลิกส่วนหัวของ ListView <ListView x:Name='lv' Height="150" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler"> คุณสมบัติ GridViewColumnHeader.Click ไม่มีอยู่ในรายการ คุณสมบัติที่เกี่ยวข้องบางอย่างจนถึงตอนนี้: Multibinding รวมกับ StringFormat TargetNullValue กับการผูก คุณสมบัติ TextTrimming ส่วนขยายมาร์กอัป การเพิ่มเอฟเฟกต์ Aero ให้กับ Window คุณสมบัติ "คำอธิบายภาพ" ขั้นสูง ตัวแปลง XAML ดูสิ่งนี้ด้วย: คุณสมบัติที่ซ่อนอยู่ของ C # คุณสมบัติที่ซ่อนอยู่ของ Python คุณสมบัติที่ซ่อนอยู่ของ ASP.NET คุณสมบัติที่ซ่อนอยู่ของ Perl คุณสมบัติที่ซ่อนอยู่ของ Java คุณสมบัติที่ซ่อนอยู่ของ …

5
การเปลี่ยนเคอร์เซอร์ใน WPF บางครั้งก็ใช้ได้ผลบางครั้งก็ไม่ได้ผล
ในการควบคุมผู้ใช้ของฉันหลายรายการฉันเปลี่ยนเคอร์เซอร์โดยใช้ this.Cursor = Cursors.Wait; เมื่อฉันคลิกที่บางสิ่ง ตอนนี้ฉันต้องการทำสิ่งเดียวกันบนหน้า WPF ด้วยการคลิกปุ่ม เมื่อฉันวางเมาส์เหนือปุ่มเคอร์เซอร์จะเปลี่ยนเป็นรูปมือ แต่เมื่อฉันคลิกเคอร์เซอร์จะไม่เปลี่ยนเป็นเคอร์เซอร์รอ ฉันสงสัยว่าสิ่งนี้เกี่ยวข้องกับความจริงที่ว่ามันเป็นปุ่มหรือเพราะนี่คือหน้าไม่ใช่การควบคุมผู้ใช้? นี่ดูเหมือนพฤติกรรมแปลก ๆ
123 c#  wpf 

6
การทำให้แอปพลิเคชัน WPF ดูเป็นสไตล์เมโทรแม้แต่ใน Windows 7? (หน้าต่าง Chrome / ธีม / ธีม)
ฉันชอบหน้าต่าง Chrome บน Office Suite และ Visual Studio ใหม่: ฉันยังคงพัฒนาแอปพลิเคชันสำหรับ Windows 7 แต่ฉันสงสัยว่ามีวิธีที่ง่ายและรวดเร็ว (อ่าน: สไตล์ WPF หรือ Windows Library) เพื่อเลียนแบบสไตล์นี้ ฉันเคยทำสไตล์โครเมี่ยมหน้าต่างมาแล้ว แต่การทำให้มันดูและประพฤติถูกต้องเป็นเรื่องยุ่งยากมาก มีใครทราบบ้างว่ามีเทมเพลตหรือไลบรารีเพื่อเพิ่มรูปลักษณ์ "UI สมัยใหม่" ให้กับแอปพลิเคชัน WPF ของฉันหรือไม่

7
การผูกการมองเห็นของปุ่มกับค่าบูลใน ViewModel
ฉันจะผูกการมองเห็นของปุ่มกับค่าบูลใน ViewModel ของฉันได้อย่างไร <Button Height="50" Width="50" Style="{StaticResource MyButtonStyle}" Command="{Binding SmallDisp}" CommandParameter="{Binding}" Cursor="Hand" Visibility="{Binding Path=AdvancedFormat}" />
122 c#  wpf  xaml  data-binding 

9
จะทำให้กลุ่มปุ่มสลับทำหน้าที่เหมือนปุ่มตัวเลือกใน WPF ได้อย่างไร
ฉันมีกลุ่มปุ่มที่ควรทำหน้าที่เหมือนปุ่มสลับ แต่ยังเป็นปุ่มตัวเลือกที่สามารถเลือก / กดลงได้เพียงปุ่มเดียวในเวลาปัจจุบัน นอกจากนี้ยังต้องมีสถานะที่ไม่มีการเลือก / กดปุ่มใด ๆ ลักษณะการทำงานจะเป็นเหมือนแถบเครื่องมือ Photoshop โดยเลือกศูนย์หรือเครื่องมือใดเครื่องมือหนึ่งเมื่อใดก็ได้! มีความคิดอย่างไรว่าสิ่งนี้สามารถนำไปใช้ใน WPF ได้หรือไม่?
122 wpf 

12
WPF ListView ปิดการเลือก
ฉันมี WPF ListView ง่ายๆและคำถามง่ายๆ: เป็นไปได้ไหมที่จะปิดการเลือกดังนั้นเมื่อผู้ใช้คลิกแถวแถวนั้นจะไม่ถูกไฮไลต์ ฉันต้องการให้แถวที่ 1 ดูเหมือนกับแถว 0 เมื่อคลิก อาจเกี่ยวข้อง: ฉันสามารถกำหนดรูปลักษณ์ของโฮเวอร์ / การเลือกได้หรือไม่? เช่น. เพื่อแทนที่รูปลักษณ์ของโฮเวอร์ไล่ระดับสีน้ำเงิน (บรรทัด 3) ด้วยสีทึบที่กำหนดเอง ฉันได้พบสิ่งนี้และสิ่งนี้น่าเสียดายที่ไม่ได้ช่วย (การบรรลุสิ่งเดียวกันโดยไม่ใช้ ListView ก็ยอมรับได้เช่นกันฉันแค่อยากจะสามารถใช้การเลื่อนแบบลอจิคัลและการจำลองเสมือน UI เหมือนที่ ListView ทำ) XAML สำหรับ ListView คือ: <ListView Height="280" Name="listView"> <ListView.Resources> <!-- attempt to override selection color --> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightColorKey}" Color="Green" /> </ListView.Resources> <ListView.View> <GridView> …
122 wpf  listview 

1
อะไรคือความแตกต่างระหว่าง 'อัตโนมัติ' และ '*' เมื่อตั้งค่าความกว้าง / ความสูงสำหรับคอลัมน์กริด
ฉันไม่สามารถแยกแยะความแตกต่างระหว่าง 'อัตโนมัติ' และ '*' เมื่อตั้งค่าความกว้าง / ความสูงสำหรับคอลัมน์กริด กรุณาช่วย!
122 wpf 

4
สร้างแถบเมนูใน WPF หรือไม่
ฉันต้องการสร้างแถบเมนูที่เหมือนกับในรูปแบบ windows ในแอปพลิเคชัน WPF ของฉัน ฉันจะทำอย่างไร ตัวเลือกเมนูในกล่องเครื่องมือการควบคุม WPF จะให้เฉพาะแถบว่างเท่านั้น
120 c#  wpf  xaml 

6
จะเพิ่มข้อความลงในโค้ด WPF ในโค้ดได้อย่างไร?
ฉันรู้สึกโง่ แต่ไม่สามารถหาวิธีเพิ่มข้อความในการควบคุม WPF Label ในโค้ดได้ เช่นต่อไปนี้สำหรับ TextBlock: DesrTextBlock.Text = "some text"; คุณสมบัติเทียบเท่าใน Label สำหรับทำอะไร? DesrLabel.??? = "some text"; //something like this
120 c#  wpf 

8
แอพ Metro ใน Windows 8 จะสื่อสารกับแอพเดสก์ท็อปแบ็กเอนด์บนเครื่องเดียวกันได้อย่างไร
ในสถานการณ์ที่คุณมีส่วนหน้า UI ที่สร้างขึ้นโดยใช้แอพสไตล์เมโทรใหม่สำหรับ windows 8 และต้องการให้มันสื่อสารกับแอปพลิเคชัน. NET ที่ทำงานบนเดสก์ท็อปบนเครื่องท้องถิ่นเดียวกัน (เช่นแอปบริการ windows) การสื่อสารระหว่างกระบวนการมีรูปแบบใดบ้างระหว่างแอป Metro และแอปเดสก์ท็อป ขอขอบคุณ Pavel Minaev จากทีม Visual Studio ที่ให้ข้อมูลเบื้องต้นบางส่วนที่นี่ในความคิดเห็นโดยอ้างถึง: จากข้อมูลของ Martyn Lovell ไม่มีกลไกใด ๆ สำหรับสิ่งนั้นและบางส่วนที่สามารถใช้งานได้นั้นถูก จำกัด โดยเจตนา ท่อที่มีชื่อจะไม่มีเช่นและไม่มีไฟล์ที่แมปหน่วยความจำ มีซ็อกเก็ต (รวมถึงซ็อกเก็ตเซิร์ฟเวอร์) แต่เมื่อเชื่อมต่อกับ localhost คุณสามารถเชื่อมต่อกับแอพเดียวกันเท่านั้น คุณสามารถใช้ไฟล์ปกติในหนึ่งใน "โฟลเดอร์ที่รู้จัก" ที่แชร์ (เอกสารรูปภาพ ฯลฯ ) แต่นั่นเป็นการแฮ็กที่ค่อนข้างหยาบซึ่งจำเป็นต้องมีการสำรวจและผู้ใช้สามารถมองเห็นได้ - Pavel Minaevแสดงความคิดเห็นเกี่ยวกับปัญหานี้ ดังนั้นการล้มเหลวในแนวทางปกติฉันกำลังคิดที่จะใช้บริการเว็บหรือการอ่าน / เขียนไปยังฐานข้อมูลเพื่อให้รูปแบบการสื่อสารบางอย่างเกิดขึ้นซึ่งทั้งสองอย่างนี้ดูเหมือนจะมากเกินไปเมื่อกระบวนการทำงานบนเครื่องเดียวกัน สิ่งที่ฉันพยายามทำอยู่ตรงนี้สมเหตุสมผลไหม ฉันเห็นว่าจำเป็นต้องมีแอปรถไฟฟ้าใต้ดินเพื่อเป็น UI …

7
การกำจัดการควบคุมผู้ใช้ WPF
ฉันได้สร้างการควบคุมผู้ใช้ WPF แบบกำหนดเองซึ่งมีวัตถุประสงค์เพื่อใช้โดยบุคคลที่สาม การควบคุมของฉันมีสมาชิกส่วนตัวซึ่งเป็นแบบใช้แล้วทิ้งและฉันต้องการให้แน่ใจว่าวิธีการกำจัดจะถูกเรียกใช้เสมอเมื่อปิดหน้าต่าง / แอปพลิเคชันที่มีอยู่ อย่างไรก็ตาม UserControl ไม่สามารถใช้แล้วทิ้ง ฉันลองใช้อินเทอร์เฟซ IDisposable และสมัครรับเหตุการณ์ Unloaded แต่ไม่ได้รับการเรียกเมื่อแอปพลิเคชันโฮสต์ปิด ถ้าเป็นไปได้ฉันไม่ต้องการพึ่งพาผู้บริโภคในการควบคุมของฉันที่จำเรียกวิธีการกำจัดเฉพาะ public partial class MyWpfControl : UserControl { SomeDisposableObject x; // where does this code go? void Somewhere() { if (x != null) { x.Dispose(); x = null; } } } ทางออกเดียวที่ฉันพบจนถึงตอนนี้คือสมัครรับเหตุการณ์ ShutdownStarted ของผู้มอบหมายงาน นี่เป็นแนวทางที่สมเหตุสมผลหรือไม่? this.Dispatcher.ShutdownStarted …
119 c#  .net  wpf  user-controls  dispose 

1
ฉันจะปิดการใช้งานการเลื่อนแนวนอนในกล่องรายการ WPF ได้อย่างไร
ดูเหมือนจะเป็นคำถามง่ายๆที่ไร้เหตุผล แต่การค้นหาของ Google และ Stack Overflow ไม่ได้ผลอะไรเลย ฉันจะปิดใช้งานการเลื่อนแนวนอนใน WPF ListBox ได้อย่างไรเมื่อรายการใช้พื้นที่แนวนอนมากกว่าที่มีอยู่ในกล่อง
119 c#  .net  wpf  visual-studio  listbox 

6
ฉันจะใส่เส้นขอบบนกริดใน WPF ได้อย่างไร
ฉันจะใส่เส้นขอบบนกริดใน C # / WPF ได้อย่างไร นี่คือสิ่งที่ฉันอยากให้เป็น แต่วางเส้นขอบรอบ ๆ สิ่งทั้งหมดแทนที่จะเป็นตัวควบคุมกริดที่ฉันใส่ในแอปพลิเคชันของฉัน <Grid> <Border BorderBrush="Black" BorderThickness="2"> <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" /> </Border> ... and so on ...
119 c#  wpf 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.