2013-10-28 3 views
-1

Любая идея добавления управления windows.forms в xaml.Добавление управления windows.forms в wpf

Я получил этот код

xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
       <WindowsFormsHost Margin="272,10,396,42" Width="240"> 
        <wf:TextBox x:Name="txtAutoProductCode" AutoCompleteMode="SuggestAppend" AutoCompleteSource="CustomSource" /> 
       </WindowsFormsHost> 

Но я получил исключение. Я не уверен что делать. Я застрял здесь.

Подробное исключение приводится ниже ..

System.Windows.Markup.XamlParseException was unhandled 
    HResult=-2146233087 
    Message='Initialization of 'Billing.MainWindow' threw an exception.' Line number '6' and line position '9'. 
    Source=PresentationFramework 
    LineNumber=6 
    LinePosition=9 
    StackTrace: 
     at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
     at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
     at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
     at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc) 
     at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties) 
     at System.Windows.Application.DoStartup() 
     at System.Windows.Application.<.ctor>b__1(Object unused) 
     at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
     at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 
     at System.Windows.Threading.DispatcherOperation.InvokeImpl() 
     at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Windows.Threading.DispatcherOperation.Invoke() 
     at System.Windows.Threading.Dispatcher.ProcessQueue() 
     at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
     at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
     at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 
     at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
+4

Просьба указать код исключения – JosephGarrone

+3

Какое исключение? Мы не читатели разума. – Chris

+0

Задайте нам вопрос и/или исключение попробуйте свою идею, если у вас возникли проблемы, отправьте его здесь – saeed

ответ

1

Только так я мог получить его работу было установить свойство автозаполнения в коде позади. В противном случае я вижу ту же ошибку. Но это должно быть сделано после InitializeComponent().

public MainWindow() 
{ 
    InitializeComponent(); 

    txtAutoProductCode.AutoCompleteSource = AutoCompleteSource.CustomSource; 
    txtAutoProductCode.AutoCompleteCustomSource.Add("item1"); 
    txtAutoProductCode.AutoCompleteCustomSource.Add("item2"); 
} 

<Grid> 
    <WindowsFormsHost Margin="272,10,396,42" Width="240"> 
     <wf:TextBox x:Name="txtAutoProductCode" AutoCompleteMode="SuggestAppend"/> 
    </WindowsFormsHost> 
</Grid> 
+0

Да, вы правы. Но я не добавлял автоматически полные свойства, показывая, пока я запускаю программу. Я предполагаю, что это еще один простой способ добавить свойство автозаполнения. Правильно? – Kamal

0

По словам @WeylandYutani, я удалены свойства автозаполнения из кода XAML. Он работал нормально.

Сначала добавьте ссылку на WindowsFormsIntegration и System.Windows.Forms

Затем добавляют с помощью System.Windows.Forms в качестве пространства имен

XAML

xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
       <WindowsFormsHost Margin="272,10,396,42" Width="240"> 
        <wf:TextBox x:Name="txtAutoProductCode" /> 
       </WindowsFormsHost> 

Autocomplete Номер функции

void Auto_Complete() 
    { 
     txtAutoProductCode.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     txtAutoProductCode.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     AutoCompleteStringCollection coll = new AutoCompleteStringCollection(); 

     SqlCeCommand com = new SqlCeCommand("SELECT ProductCode FROM Products_Master", con); 
     SqlCeDataReader dr; 
     con.Open(); 
     try 
     { 
      dr = com.ExecuteReader(); 
      while (dr.Read()) 
      { 
       string aProduct = dr.GetString(0); 
       coll.Add(aProduct); 
      } 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     txtAutoProductCode.AutoCompleteCustomSource = coll; 
     con.Close(); 
    } 

Добавить Auto_Complete(); после InitializeComponent();

RUN IT.

Смежные вопросы