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

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

5
WPF: จะแสดงภาพในขนาดดั้งเดิมได้อย่างไร?
ฉันมีปัญหากับการแสดงภาพใน WPF นี่คือรหัสของฉัน: <Button HorizontalAlignment="Left" Grid.Column="1" Grid.Row="5" Margin="0,5"> <Button.Content> <StackPanel Orientation="Horizontal" Margin="10,0"> <Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" /> <TextBlock Text="添加" /> </StackPanel> </Button.Content> </Button> ฉันมีรูปภาพที่มีขนาดดั้งเดิม 32 * 32 แต่เมื่อฉันรันโค้ดด้านบนรูปภาพจะยืดออกจนเต็มพื้นที่ทั้งหมดเกินขนาดดั้งเดิม ฉันยังตั้งค่าคุณสมบัติ "ยืด" เป็น "ไม่มี" แต่ดูเหมือนว่าจะไม่ได้ผล ดังนั้นฉันจะแก้ไขปัญหานี้ได้อย่างไร? ขอบคุณ!
98 wpf  image  resize  size 

5
ปุ่มในคอลัมน์รับแถวที่มาจากตัวจัดการเหตุการณ์คลิก
ฉันตั้งค่า itemsource ของ WPF Datagrid ของฉันเป็นรายการวัตถุที่ส่งคืนจาก DAL ของฉัน ฉันยังได้เพิ่มคอลัมน์พิเศษที่มีปุ่ม xaml อยู่ด้านล่าง <toolkit:DataGridTemplateColumn MinWidth="100" Header="View"> <toolkit:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Click="Button_Click">View Details</Button> </DataTemplate> </toolkit:DataGridTemplateColumn.CellTemplate> </toolkit:DataGridTemplateColumn> สิ่งนี้แสดงผลได้ดี อย่างไรก็ตามในเมธอดButton_Clickมีวิธีใดบ้างที่ฉันจะได้รับแถวบนดาต้ากริดที่มีปุ่มอยู่ โดยเฉพาะอย่างยิ่งคุณสมบัติอย่างหนึ่งของวัตถุของฉันคือ "Id" และฉันต้องการส่งสิ่งนี้ไปยังตัวสร้างของรูปแบบอื่นในตัวจัดการเหตุการณ์ private void Button_Click(object sender, RoutedEventArgs e) { //I need to know which row this button is on so I can retrieve the "id" …

3
เปลี่ยนคุณสมบัติ Canvas.Left ในโค้ดข้างหลัง?
ฉันมีรูปสี่เหลี่ยมผืนผ้าใน XAML ของฉันและต้องการเปลี่ยนCanvas.Leftคุณสมบัติในโค้ดด้านหลัง: <UserControl x:Class="Second90.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300" KeyDown="txt_KeyDown"> <Canvas> <Rectangle Name="theObject" Canvas.Top="20" Canvas.Left="20" Width="10" Height="10" Fill="Gray"/> </Canvas> </UserControl> แต่ไม่ได้ผล: private void txt_KeyDown(object sender, KeyEventArgs e) { theObject.Canvas.Left = 50; } ไม่มีใครรู้ว่าไวยากรณ์คืออะไร?

6
WPF ToolBar: วิธีลบกริปและล้น
ใน WPF ToolBarPanel-ToolBar-Menu ที่ซ้อนกันเราต้องการกำจัดที่จับกริปไปทางซ้ายและพื้นที่ล้นไปทางขวา ทั้งคู่เป็นสีเทา แต่เราไม่ต้องการให้แสดงเลย ความคิดใด ๆ เกี่ยวกับการทำสิ่งนั้นให้สำเร็จ? ในกรณีที่คำศัพท์ของฉันไม่ถูกต้องทั้งหมดหากคุณดูภาพในรูปที่ 3 ของลิงก์ด้านล่างที่ด้านล่างสุดของแถบเครื่องมือสามแถบจะมีที่จับทางด้านซ้ายของเมนูแบบเลื่อนลงและทางด้านขวาของทางขวาสุด มีปุ่มล้น รูปภาพของแถบเครื่องมือ
98 wpf  toolbar 

23
ฉันจะจัดเรียงคอลเล็กชันที่สังเกตได้อย่างไร
ฉันมีชั้นเรียนต่อไปนี้: [DataContract] public class Pair<TKey, TValue> : INotifyPropertyChanged, IDisposable { public Pair(TKey key, TValue value) { Key = key; Value = value; } #region Properties [DataMember] public TKey Key { get { return m_key; } set { m_key = value; OnPropertyChanged("Key"); } } [DataMember] public TValue Value { get { …

7
มีแนวทางใดบ้างสำหรับข้อมูลเวลาออกแบบจำลองใน WPF
ฉันกำลังทำงานโดยไม่มีการผสมผสานนิพจน์และใช้ตัวแก้ไข XAML ใน vs2010 นอกเหนือจากภูมิปัญญานี้แล้วฉันก็เห็นความจำเป็นในการผูกข้อมูลเวลาออกแบบมากขึ้น สำหรับกรณีง่ายๆFallbackValueคุณสมบัตินี้ใช้งานได้ดีมาก (Textboxes และ TextBlocks ฯลฯ ) แต่โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับItemsControlสิ่งที่คล้ายกันเราต้องการข้อมูลตัวอย่างเพื่อให้มองเห็นได้ในตัวออกแบบเพื่อให้คุณสามารถปรับและปรับแต่งการควบคุมและเทมเพลตข้อมูลโดยไม่ต้องเรียกใช้ไฟล์ปฏิบัติการ ฉันรู้ว่าObjectDataProviderอนุญาตให้ผูกกับประเภทและทำให้สามารถให้ข้อมูลเวลาออกแบบสำหรับการแสดงภาพได้ แต่ก็มีการเล่นกลเพื่อให้ข้อมูลเรียลไทม์สามารถผูกได้โดยไม่ต้องเสียทรัพยากรโดยการโหลดโหลดทั้งเวลาออกแบบ ข้อมูลจำลองและการเชื่อมโยงรันไทม์ สิ่งที่ฉันต้องการจริงๆคือความสามารถในการมีพูด "จอห์น" "พอล" "จอร์จ" และ "ริงโก" ปรากฏในตัวออกแบบ XAML เป็นรายการที่มีสไตล์ในของฉันItemsControlแต่ข้อมูลจริงจะปรากฏขึ้นเมื่อแอปพลิเคชัน วิ่ง ฉันรู้ด้วยว่า Blend อนุญาตให้มีคุณสมบัติแฟนซีบางอย่างที่กำหนดข้อมูลการผูกเวลาออกแบบที่ WPF ละเลยอย่างมีประสิทธิภาพในเงื่อนไขรันไทม์ ดังนั้นคำถามของฉันคือ: 1. ฉันจะใช้ประโยชน์จากการเชื่อมโยงเวลาออกแบบของคอลเลกชันและข้อมูลที่ไม่สำคัญในตัวออกแบบ XAML ของ Visual Studio แล้วเปลี่ยนไปใช้การเชื่อมโยงรันไทม์ได้อย่างไร 2. ผู้อื่นแก้ไขปัญหาข้อมูลเวลาออกแบบเทียบกับรันไทม์นี้อย่างไร ในกรณีของฉันฉันไม่สามารถใช้ข้อมูลเดียวกันสำหรับทั้งสองอย่างได้อย่างง่ายดาย (เช่นเดียวกับที่สามารถทำได้ด้วยเช่นการสืบค้นฐานข้อมูล) 3. ทางเลือกอื่นในการผสมผสานนิพจน์ที่ฉันสามารถใช้สำหรับการออกแบบ XAML ที่รวมข้อมูลได้หรือไม่ (ฉันรู้ว่ามีทางเลือกอื่น แต่ฉันต้องการบางอย่างที่ฉันสามารถใช้ได้และดูข้อมูลตัวอย่างที่ถูกผูกไว้ ฯลฯ )

8
ซ่อนแถวตารางใน WPF
ฉันมีแบบฟอร์ม WPF ง่ายๆพร้อมGridประกาศในแบบฟอร์ม นี้Gridมีพวงของแถว: <Grid.RowDefinitions> <RowDefinition Height="Auto" MinHeight="30" /> <RowDefinition Height="Auto" Name="rowToHide" /> <RowDefinition Height="Auto" MinHeight="30" /> </Grid.RowDefinitions> แถวชื่อrowToHideมีช่องป้อนข้อมูลไม่กี่ช่องและฉันต้องการซ่อนแถวนี้หลังจากตรวจพบว่าไม่ต้องการช่องเหล่านี้ ง่ายพอที่จะตั้งค่าVisibility = Hiddenเป็นรายการทั้งหมดในแถว แต่แถวยังคงใช้พื้นที่ในไฟล์Grid. ฉันพยายามตั้งค่าHeight = 0รายการ แต่ดูเหมือนจะไม่ได้ผล คุณสามารถคิดได้ดังนี้คุณมีแบบฟอร์มในนั้นคุณมีเมนูแบบเลื่อนลงว่า "ประเภทการชำระเงิน" และหากบุคคลนั้นเลือก "เงินสด" คุณต้องการซ่อนแถวที่มีรายละเอียดบัตร ไม่ใช่ตัวเลือกในการเริ่มแบบฟอร์มด้วยสิ่งนี้ที่ซ่อนอยู่แล้ว
97 wpf  grid 

17
ปิดหน้าต่างจาก ViewModel
ฉันกำลังสร้างการเข้าสู่ระบบโดยใช้window controlเพื่ออนุญาตให้ผู้ใช้ล็อกอินเข้าสู่WPFแอปพลิเคชันที่ฉันกำลังสร้าง จนถึงตอนนี้ผมได้สร้างวิธีการที่จะตรวจสอบว่าผู้ใช้จะได้เข้าในข้อมูลประจำตัวที่ถูกต้องสำหรับusernameและpasswordในtextboxบนหน้าจอเข้าสู่ระบบสองbindingproperties ฉันประสบความสำเร็จโดยการสร้างboolวิธีการเช่นนั้น public bool CheckLogin() { var user = context.Users.Where(i => i.Username == this.Username).SingleOrDefault(); if (user == null) { MessageBox.Show("Unable to Login, incorrect credentials."); return false; } else if (this.Username == user.Username || this.Password.ToString() == user.Password) { MessageBox.Show("Welcome " + user.Username + ", you have successfully logged in."); …
97 c#  wpf  mvvm 

9
WPF: วิธีลบโฟกัสโดยใช้โปรแกรมออกจากกล่องข้อความ
ฉันต้องการเพิ่มง่าย (อย่างน้อยผมคิดว่ามัน) พฤติกรรมการ TextBoxWPF เมื่อผู้ใช้กด Escape ฉันต้องการให้TextBoxเขาแก้ไขข้อความเมื่อผู้ใช้เริ่มแก้ไขและฉันต้องการลบโฟกัสออกจากไฟล์TextBox. ฉันไม่มีปัญหาในการตั้งค่าข้อความสำหรับค่าที่มีในตอนเริ่มต้นของการแก้ไข ปัญหาคือการลบโฟกัสขององค์ประกอบ ฉันไม่ต้องการย้ายโฟกัสไปที่ส่วนประกอบอื่นฉันแค่อยากTextBoxให้โฟกัสเสีย ฉันจะต้องมีองค์ประกอบที่มองไม่เห็นเพื่อตั้งโฟกัสเพื่อที่ฉันTextBoxจะสูญเสียโฟกัสหรือไม่?
96 wpf  textbox  focus 

4
WPF TextBox จะไม่กรอกข้อมูลใน StackPanel
ฉันมีตัวTextBoxควบคุมภายในStackPanelซึ่งOrientationถูกตั้งค่าเป็นHorizontalแต่ไม่สามารถรับ TextBox เพื่อเติมเต็มพื้นที่ StackPanel ที่เหลือได้ XAML: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="180" Width="324"> <StackPanel Background="Orange" Orientation="Horizontal" > <TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/> <TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/> </StackPanel> </Window> และนี่คือสิ่งที่ดูเหมือน: เหตุใด TextBox จึงไม่เติม StackPanel ฉันรู้ว่าฉันสามารถควบคุมได้มากขึ้นโดยใช้ตัวGridควบคุมฉันแค่สับสนเกี่ยวกับเค้าโครง
96 .net  wpf 

5
ฉันจะตั้งค่า ViewModel บนหน้าต่างใน XAML โดยใช้คุณสมบัติ DataContext ได้อย่างไร
คำถามพูดได้ทั้งหมด ฉันมีหน้าต่างและได้พยายามตั้งค่า DataContext โดยใช้เนมสเปซแบบเต็มให้กับ ViewModel แต่ดูเหมือนว่าฉันจะทำอะไรผิดพลาด <Window x:Class="BuildAssistantUI.BuildAssistantWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="BuildAssistantUI.ViewModels.MainViewModel">
96 .net  wpf  xaml  mvvm 

8
HorizontalAlignment = Stretch, MaxWidth และ Left aligned ในเวลาเดียวกัน?
ดูเหมือนว่ามันจะง่าย แต่ฉันก็นิ่งงัน ใน WPF ฉันต้องการกล่องข้อความที่ขยายไปตามความกว้างของพาเรนต์ แต่ต้องมีความกว้างสูงสุดเท่านั้น ปัญหาคือฉันต้องการให้มันถูกปล่อยให้เป็นธรรมภายในพาเรนต์ หากต้องการยืดคุณต้องใช้ HorizontalAlignment = "Stretch" แต่ผลลัพธ์จะอยู่กึ่งกลาง ฉันได้ทดลองกับ HorizontalContentAlignment แล้ว แต่ดูเหมือนจะไม่ทำอะไรเลย ฉันจะทำให้กล่องข้อความสีฟ้าโตขึ้นตามขนาดของหน้าต่างมีความกว้างสูงสุด 200 พิกเซลได้อย่างไรและถูกปล่อยให้เป็นธรรม? <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel> <TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" /> </StackPanel> </Page> เคล็ดลับคืออะไร?
96 wpf  xaml  alignment  stretch 

14
WPF Textblock, linebreak ในแอตทริบิวต์ Text
มีวิธี\nการแบ่งบรรทัดTextBlockหรือไม่? <TextBlock Text="line1\nLine2" /> หรือมีวิธีที่ดีกว่าในการบังคับให้แบ่งบรรทัดกลางภายในTextแอตทริบิวต์? <LineBreak /> สิ่งนี้ไม่ได้ผลสำหรับฉันต้องเป็นค่าของTextแอตทริบิวต์เนื่องจากสตริงข้อความถูกตั้งค่าจากแหล่งภายนอก ฉันคุ้นเคยLineBreakแต่มันไม่ใช่คำตอบที่ฉันกำลังมองหา
96 wpf  textblock 

5
จะส่งจำนวนเต็มเป็น ConverterParameter ได้อย่างไร
ฉันกำลังพยายามเชื่อมโยงกับคุณสมบัติจำนวนเต็ม: <RadioButton Content="None" IsChecked="{Binding MyProperty, Converter={StaticResource IntToBoolConverter}, ConverterParameter=0}" /> และตัวแปลงของฉันคือ: [ValueConversion(typeof(int), typeof(bool))] public class IntToBoolConverter : IValueConverter { public object Convert(object value, Type t, object parameter, CultureInfo culture) { return value.Equals(parameter); } public object ConvertBack(object value, Type t, object parameter, CultureInfo culture) { return value.Equals(false) ? DependencyProperty.UnsetValue : parameter; } …

5
จะสร้างหน้าต่าง WPF โดยไม่มีขอบที่สามารถปรับขนาดได้ผ่านกริปเท่านั้นได้อย่างไร?
หากคุณตั้งค่าResizeMode="CanResizeWithGrip"บน WPF Windowกริปปรับขนาดจะแสดงที่มุมขวาล่างดังต่อไปนี้: ถ้าคุณตั้งค่าWindowStyle="None"เช่นเดียวกับแถบชื่อเรื่องจะหายไป แต่ยังคงสีเทาขอบ bevelled ResizeMode="NoResize"จนกว่าคุณชุด น่าเสียดายที่ชุดคุณสมบัตินี้รวมกันกริปปรับขนาดก็หายไปเช่นกัน ฉันได้แทนที่Window's ผ่านทางที่กำหนดเองControlTemplate Styleฉันต้องการระบุเส้นขอบของหน้าต่างด้วยตัวเองและฉันไม่ต้องการให้ผู้ใช้สามารถปรับขนาดหน้าต่างได้จากทั้งสี่ด้าน แต่ฉันต้องการกริปปรับขนาด มีใครสามารถให้รายละเอียดวิธีง่ายๆในการปฏิบัติตามเกณฑ์เหล่านี้ได้หรือไม่ ห้ามมีเส้นขอบที่Windowนอกเหนือจากที่ฉันระบุในไฟล์ControlTemplate. อย่ามีด้ามจับปรับขนาดการทำงานในที่มุมขวาล่าง ห้ามมีแถบชื่อเรื่อง

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