Попытка получить usercontrol для загрузки строки подключения, доступной в MainWindow (WPF, C# related) - PullRequest
0 голосов
/ 14 января 2020

Я получал голубую волнистую линию, когда пытался загрузить строку подключения из моего 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...