Я получал голубую волнистую линию, когда пытался загрузить строку подключения из моего usercontrol. Я гуглил и обнаружил, что мы должны либо создать свойство зависимости или привязки, либо включить (! .This.designmode) код в приложение.
Тем не менее, я гуглил и пробовал свойство зависимости, оно работает, но я все еще получал волнистую строку и ошибку - строка подключения не была инициализирована. Затем я изменил код для вызова метода при вызове обработчика события свойства зависимостей (не уверен, правильно ли я поступаю).
Хотел бы получить совет о том, как правильно вызывать метод который содержит ссылку на строку подключения? Я фактически включил его в конструктор сразу после вызова InitializeComponent (), который привел к ошибке. Теперь я включил его в обработчик событий, но правильно ли это сделать? Имя метода - GetDatafromReasons ();
Это мой код контроля пользователя.
namespace BPSDesktopApp.Reasons
{
/// <summary>
/// Interaction logic for MainReasonsUC.xaml
/// </summary>
public partial class MainReasonsUC : UserControl
{
DataSet reason_ds = new DataSet("ReasonDataSet");
DataTable reason_tbl = new DataTable("ReasonTable");
List<SubReason> Reasons = new List<SubReason>();
string connstringfromparent = " ";
public class SubReason
{
public int ReasonId { get; set; }
public string ReasonText { get; set; }
}
public MainReasonsUC()
{
try
{
InitializeComponent();
CreateDatatable();
//GetDatafromReasons();
// ConvertDataTabletoList();
}
catch (Exception ex)
{
LogHelper.Log(LogTarget.File, ex.ToString());
}
}
public static readonly DependencyProperty SetConnStringProperty =
DependencyProperty.Register("ConnString", typeof(string), typeof(MainReasonsUC), new
PropertyMetadata("", new PropertyChangedCallback(SetConnStringProp_Changed)));
public string ConnString
{
get { return (string)GetValue(SetConnStringProperty); }
set { SetValue(SetConnStringProperty, value); }
}
private static void SetConnStringProp_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MainReasonsUC mrusercontrol = d as MainReasonsUC;
mrusercontrol.SetConnStringProp_Changed(e);
}
private void SetConnStringProp_Changed(DependencyPropertyChangedEventArgs e)
{
label.Content = e.NewValue.ToString();
connstringfromparent = e.NewValue.ToString();
GetDatafromReasons();
}
}
}
и это мое главное окно
public partial class ReasonsWindow : Window
{
string connstring1 = ConfigurationManager.ConnectionStrings["submittodb"].ToString();
public ReasonsWindow()
{
InitializeComponent();
MainReasons_UControl.ConnString = connstring1;
}
}