मैं अपने एप्लिकेशन के लिए एक सिस्टम रखरखाव स्क्रीन विकसित करने की कोशिश कर रहा हूं जिसमें मेरे पास एक अलग रखरखाव विकल्प का प्रतिनिधित्व करने वाले कई टैब हैं यानी सिस्टम उपयोगकर्ता और कैटर बनाए रखें। एक बार जब उपयोगकर्ता मौजूदा रिकॉर्ड को बदलने के लिए संपादन/नया पर क्लिक करता है तो मैं वर्तमान टैब से नेविगेटिंग को रोकना चाहता हूं जब तक कि उपयोगकर्ता या तो सहेजें या रद्द नहीं करता।WPF टैब नियंत्रण टैब को रोकें
कुछ googling के बाद मुझे एक लिंक मिला है http://joshsmithonwpf.wordpress.com/2009/09/04/how-to-prevent-a-tabitem-from-being-selected/ जो मेरी समस्या को हल करने लग रहा था, या तो मैंने सोचा।
मैंने इसे लागू करने का प्रयास किया है, लेकिन मेरी घटना कभी भी आग लगती नहीं है। नीचे मेरा एक्सएएमएल है।
<TabControl Name="tabControl">
<TabItem Header="Users">
<DockPanel>
<GroupBox Header="Existing Users" Name="groupBox1" DockPanel.Dock="Top" Height="50">
<StackPanel Orientation="Horizontal">
<Label Margin="3,3,0,0">User:</Label>
<ComboBox Width="100" Height="21" Margin="3,3,0,0"></ComboBox>
<Button Width="50" Height="21" Margin="3,3,0,0" Name="btnUsersEdit" Click="btnUsersEdit_Click">Edit</Button>
<Button Width="50" Height="21" Margin="3,3,0,0" Name="btnUsersNew" Click="btnUsersNew_Click">New</Button>
</StackPanel>
</GroupBox>
<GroupBox Header="User Information" Name="groupBox2">
<Button Content="Cancel" Height="21" Name="btnCancel" Width="50" Click="btnCancel_Click" />
</GroupBox>
</DockPanel>
</TabItem>
<TabItem Header="User Groups">
</TabItem>
</TabControl>
और ये मेरे कोड
public partial class SystemMaintenanceWindow : Window
{
private enum TEditMode { emEdit, emNew, emBrowse }
private TEditMode _EditMode = TEditMode.emBrowse;
private TEditMode EditMode
{
get { return _EditMode; }
set
{
_EditMode = value;
}
}
public SystemMaintenanceWindow()
{
InitializeComponent();
var view = CollectionViewSource.GetDefaultView(tabControl.Items.SourceCollection);
view.CurrentChanging += this.Items_CurrentChanging;
}
void Items_CurrentChanging(object sender, CurrentChangingEventArgs e)
{
if ((e.IsCancelable) && (EditMode != TEditMode.emBrowse))
{
var item = ((ICollectionView)sender).CurrentItem;
e.Cancel = true;
tabControl.SelectedItem = item;
MessageBox.Show("Please Save or Cancel your work first.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void btnUsersNew_Click(object sender, RoutedEventArgs e)
{
EditMode = TEditMode.emNew;
}
private void btnUsersEdit_Click(object sender, RoutedEventArgs e)
{
EditMode = TEditMode.emEdit;
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
EditMode = TEditMode.emBrowse;
}
}
है अब
क्षमा याचना अगर मैं बेवकूफ जा रहा हूँ, लेकिन मुझे के जीवन के लिए मैं कसरत नहीं देख सकते हैं क्यों मेरे घटना उपयोगकर्ता टैब के बीच क्लिक करता है आग नहीं करता है ।
आपकी सभी मदद के लिए धन्यवाद।
Emlyn
जोश विधि काम नहीं कर रहा मेरे लिए भी – Bolu